C# 如何将T转换为object
将T转换为实体时出错C# 如何将T转换为object,c#,.net,asp.net,asp.net-mvc-3,generics,C#,.net,Asp.net,Asp.net Mvc 3,Generics,将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
另一种选择是:
db.TabMasters.AddObject(entity as TabMaster);
虽然我个人并不喜欢这样,但我更喜欢对演员进行更严格的检查。@abatishchev:显然是这样,尽管你当然没有得到那么好的检查。将作为选项添加到中。@abatischev不按原样使用您的帖子:
as
仅适用于引用类型,但T
不受此限制。。。现在,如果其中T:class
(或以其他方式约束到另一个引用类型),则为“是”。@pst:no,您不需要约束T即可将用作。我刚刚试过。@Jon Skeetvoid x(){return null as T;}void Main(){x();}
告诉我“类型参数'T'不能与'as'运算符一起使用,因为它既没有类类型约束,也没有'class'约束”在LINQPad4中。@pst:这正试图转换为T
-OP正试图从T
转换。我不知道你最后的评论是针对什么。。。
db.TabMasters.AddObject(entity as TabMaster);