【问题标题】:How to pass Entity Type names into generic helper, as a parameter?如何将实体类型名称作为参数传递给通用帮助器?
【发布时间】:2014-02-01 22:17:17
【问题描述】:

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

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

如何传入Order 作为类型名称以使这段代码更通用?我相信这与&lt;T&gt;有关

【问题讨论】:

  • 使用&lt;T&gt;,您将拥有一个generic,其中T 是一个实际类型,而不仅仅是一个类型的名称。但是您的问题很清楚,并且您已经在下面得到了很好的答案。只是想在旁注中为您指出这一点:)
  • 感谢 pid.... 赞赏

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


【解决方案1】:
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();
}

如果没有任何限制,就有可能传递任何可能导致异常的类(即使是与您的实体和您的DbContext 没有连接的类)。在这种情况下,可能会建议您使用一些 try/catch 块包装您的代码。

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 2013-04-18
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多