我在将T转换为实体时遇到了错误
public T Add(T entity)
{
CAFMEntities db = new CAFMEntities();
db.TabMasters.AddObject((TabMaster)entity);
db.SaveChanges();
return entity;
}
我遇到了一个错误:
无法将类型“T”转换为“CAFM.Data.EntityModel.TabMaster”
谢谢。
我在将T转换为实体时遇到了错误
public T Add(T entity)
{
CAFMEntities db = new CAFMEntities();
db.TabMasters.AddObject((TabMaster)entity);
db.SaveChanges();
return entity;
}
我遇到了一个错误:
无法将类型“T”转换为“CAFM.Data.EntityModel.TabMaster”
谢谢。
那么,你希望如何应用转换? T声明在哪里? 你可以尝试更改它,使其变为:
class WhateverClass<T> where T : TabMaster
在这种情况下,您不需要转换类型。或者如果您无法限制T
,可以使用:
db.TabMasters.AddObject((TabMaster)(object) entity);
另一种选择是:
db.TabMasters.AddObject(entity as TabMaster);
as
只适用于引用类型,但T
并没有被限制为引用类型... 如果where T : class
(或者其他限制为另一种引用类型),那么是可以的。 - user166390as
。我已经尝试过了。 - Jon Skeetvoid x<T>() { return null as T; } void Main () { x<string>(); }
在LINQPad4中会显示"The type parameter 'T' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint"。 - user166390TabMaster
只是一个引用类型。解释有点令人失望。 - user166390T
- OP正在尝试从T
*转换。我不确定你最后一条评论的目的地在哪里... - Jon Skeet