为什么我不能使用TEntity?

Jim*_*own 3 entity-framework

似乎最简单的事情有时难以弄清楚......许多代码引用都具有TEntity类型,用于实体数据模型中实体的通用处理.我试图在我的代码中使用它并获得:"未知类型'TEntity'"是什么给出了??? 为什么我会收到"未知类型"?这仅适用于.net 4.0吗?

顺便说一句:使用.net 3.5.

我正在尝试使用本书中的代码:

public TEntity ExecuteFirstorDefault<TEntity>(ObjectQuery<TEntity> objectQuery)
  {
    try
    {
      return objectQuery.FirstOrDefault();
    }
    catch (EntitySqlException ex)
    {
      throw ex; //TODO: Replace with handling code
      //additional exceptions as described in Chapter 18
    }
  }
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 8

TEntity泛型类型参数,而不是具体类型.


我猜我的问题是为什么我不能使用它,为什么我会得到Unknown类型.

因为它不是具体的类型.

假设您有一个通用列表实现,声明为List<T>.T是一个类型参数,这意味着它不代表特定的类型.作为程序员,您必须T通过提供类型参数来指示编译器使用特定类型而不是泛型类型.您可以创建一个整数列表,如下所示:

List<int> myInts = new List<int>();
Run Code Online (Sandbox Code Playgroud)

在此示例中,类型参数为int.List接受或返回a的所有通用方法(或属性)T将改为使用int.

进一步阅读

  • 我得到“未知类型”的原因是因为在定义方法名称后我忘记添加 &lt;TEntity&gt;。我有: Public TEntity Blah(ObjectQuery&lt;TEntity&gt; objectQuery) {} 而不是: Public TEntity Blah&lt;TEntity&gt;(ObjectQuery&lt;TEntity&gt; objectQuery) {} (2认同)