验证泛型类型是否实现某个接口

时间:2015-05-07 06:47:50

标签: c# generics interface

我有以下界面:

public interface IView<TViewModel>
{
    TViewModel ViewModel { get; set; }
}

public interface IViewModel : INotifyPropertyChanged
{
}

我想确保通用TViewModel始终是实现接口IViewModel的类。我可以做到以下几点:

public interface IView
{
    IViewModel ViewModel { get; set; }
}

但是我无法访问ViewModel特定类的所有属性和方法。

如何确保TViewModel始终是实现接口IViewModel的类?

1 个答案:

答案 0 :(得分:4)

使用where clause指定通用类型约束。

public interface IView<TViewModel> where TViewModel : IViewModel
{
    TViewModel ViewModel { get; set; }
}