如何将实体类型名称作为参数传递给通用助手?

时间:2014-02-01 22:17:18

标签: c# asp.net-mvc asp.net-mvc-3 linq c#-4.0

我想编写一个通用助手,它使用实体类型名称并在其LINQ代码中使用它。

public Boolean Eval( )
{
    var firstOrDefault = db.Class.OfType<Order>().FirstOrDefault;
}

如何传递Order作为类型名称以使此代码更通用?我相信这与<T>

有关

1 个答案:

答案 0 :(得分:6)

public Boolean Eval<T>( )
{
   var firstOrDefault = db.Class.OfType<T>().FirstOrDefault();
}

如果您希望T应始终具有某种基本类型,则可以将其扩展为以下内容:

public Boolean Eval<T>( ) where T : YourBaseType
{
   var firstOrDefault = db.Class.OfType<T>().FirstOrDefault();
}

没有任何约束,就有可能传递任何类(甚至是与yor实体和DbContext无关的类),这可能会导致异常。在这种情况下,可能建议用一些try/catch块包装代码。