namespace DaSaSo.ViewModel { public delegate TViewModel CreateViewModel() where TViewModel : BaseViewModel; public class BaseViewModel : ObservableObject { public virtual void Dispose() { } } }