类型是“字段”,但它用作“类型”

时间:2014-12-25 13:06:41

标签: c# entity-framework-6

我在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; ,任何想法如何解决这个问题?

1 个答案:

答案 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;您需要直接使用该类型的名称。