using ReactiveUI; using System.Application.Mvvm; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; namespace System.Application.UI.ViewModels { public class ViewModelBase : ReactiveObject, IDisposable, ILocalizationViewModel { [NonSerialized] private CompositeDisposable _compositeDisposable; [NonSerialized] private bool _disposed; public ViewModelBase() { ILocalizationViewModel localization = this; localization.OnChangeLanguage(); } /// /// 是否在设计器的上下文中运行 /// public static bool IsInDesignMode { get; set; } /// /// 释放该实例使用的所有资源 /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (_disposed) return; if (disposing) _compositeDisposable?.Dispose(); _disposed = true; } protected static TViewModel GetViewModel() where TViewModel : ViewModelBase => DI.Get(); } }