这是我的班级层次结构
BaseEntityCRUDGridViewModel : BaseGenericViewModel
{ }
public class BaseGenericTests<ST> : SilverlightTest
where ST : BaseGenericViewModel
我该怎样做
public class BaseEntityCRUDGridTests<T> : BaseGenericTests<T>
where T : BaseEntityCRUDGridViewModel
它给了我以下错误
Error 5 The type 'T' cannot be used as type parameter 'ST' in
the generic type or method 'Commons.UnitTests.BaseGenericTests<ST>'.
There is no implicit reference conversion from 'T'
to 'ViewModels.BaseGenericViewModel'.
path \ BaseNavigationTests.cs 23 27 Commons
答案 0 :(得分:2)
我建议以这样的方式重构,即两个ViewModel类都实现相同的接口。然后,您可以将接口要求放在通用基类上,您可以执行以下操作:
public class SubGenericTest<T> : BaseGenericTest<T> where T:IGenericVewModel, SubViewModel