我在c#和实体框架中遇到问题,我使用下一个代码:
public ViewModuleBase() //constructor
{
_CurrentModel = (from Store in CurrentModelClass()
orderby Store.ID descending
select Store).FirstOrDefault();
}
Type AC_BaseClass = typeof(AC_BASE);
virtual protected DbSet<AC_BaseClass> CurrentModelClass() //error here on AC_BaseClass
{
return Entities.AC_BASE;
}
其中AC_BASE是我派生所有实体框架部分类的类, 代码不接受AC_BaseClass作为类型,它说: AC_BaseClass是一个&#39;字段&#39;但它被用作&#39;类型&#39; ,任何想法如何解决这个问题?
答案 0 :(得分:4)
您不能将Type
类型的变量或字段用作泛型类型参数。代码必须直接使用AC_BASE
:
virtual protected DbSet<AC_BASE> CurrentModelClass()
{
return null;
}
您尝试做的事情与这个不起作用的简化示例类似:
Type someType = typeof(int);
someType i = 1; // <<== This will not work
当通过变量提供声明中的类型时,C#不允许这种&#34;间接&#34;您需要直接使用该类型的名称。