C# 如何将T转换为object

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在哪里申报?您可

将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 Skeet
void x(){return null as T;}void Main(){x();}
告诉我“类型参数'T'不能与'as'运算符一起使用,因为它既没有类类型约束,也没有'class'约束”在LINQPad4中。@pst:这正试图转换为
T
-OP正试图从
T
转换。我不知道你最后的评论是针对什么。。。
db.TabMasters.AddObject(entity as TabMaster);