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

Sam*_*lly 0 c# linq asp.net-mvc c#-4.0 asp.net-mvc-3

我想编写一个通用的帮助器,它采用实体类型名称并在其LINQ代码中使用它.

public Boolean Eval( )
{
    var firstOrDefault = db.Class.OfType<Order>().FirstOrDefault;
}
Run Code Online (Sandbox Code Playgroud)

如何传入Order类型名称以使此代码更通用?我相信这是有用的<T>

Paw*_*ger 6

public Boolean Eval<T>( )
{
   var firstOrDefault = db.Class.OfType<T>().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

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

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

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