我想创建一个泛型类的定义:T不包含RowKey
public class ClassName<T>
{
public T AccessEntity(string id)
{
return (from e in ServiceContext.CreateQuery<T>(TableName)
where e.RowKey == id // error here!
select e).FirstOrDefault();
}
}
在这段代码中我得到错误:
T不包含RowKey定义
但在运行时将取代T的参数具有RowKey的定义。也许因为编译器在编译时没有得到T中RowKey的定义,这就是为什么我得到这个错误。任何人都可以告诉我如何解决这个问题?
参考作为注释 - 我upvoted正确答案之一:编译不在乎T将是什么版本。它关心在编译时它知道些什么,这意味着你可以创建ClassName,并且Dumbo没有RowKey - >错误。 Adda约束;) –
TomTom
2012-07-23 14:53:29
Pro说明了TomTom的观点:在c#中,你可以在运行时编写一个*类型,并且调用新类型的泛型类型 - 只要满足约束条件,它就可以工作。这与C++模板非常不同。 – 2012-07-23 15:08:27