我有一个这样的模型类:
public class GenericModel<T> where T : BaseTest
{
//Ctor
public List<T> TestList{get;set;}
}
因为可以在控制器和视图中进行设置,所以我可以正常工作。
但是我有一个局部视图,所有控制器都可以使用。
我想知道我是否可以在该局部视图中执行以下操作:
@model GenericModel<T>
没有指定泛型类型。我在这里能做什么?使用界面或其他东西?
最佳答案
用T
定义它是不可能的,因为它需要一个实际的类型来跟随@model
语句。
以我的经验,在Visual Studio中使用重构,为GenericModel
说IGenericModel
和BaseTest
说IBaseTest
提取一个接口,那么您的模型语句将变为:
@model IGenericModel<IBaseTest>
更新:
为了明确起见,提取的接口可能类似于(注意
out
的方差,如果使用它,将使您的生活更轻松):public interface IGenericModel<out T> where T : IBaseTest
{
IEnumerable<T> GetAll(); // just as an example
}
public interface IBaseTest
{
T Property { get; }
}