我想为一些一次性测试/控制台应用程序编写这个小而简单的扩展方法,但我还没弄清楚如何正确获取方法签名。我想将此添加到我拥有的每个System.Data.Linq.Table中,我希望它将类型为T的实例作为参数。
这是我到目前为止没有编译的内容
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}
类型'T'必须是引用类型才能将其用作参数 泛型类型或方法中的“TEntity” 'System.Data.Linq.Table'
答案 0 :(得分:6)
试试这个:
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
where T : class
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}
您需要将T
的类型约束为引用类型(class
)才能使其生效。
如果您查看Table<TEntity>
的{{3}},您会在TEntity
class
注意到相同的类型约束。因此,为了使T
与TEntity
兼容,它必须符合相同的约束条件。
答案 1 :(得分:3)
您需要指定在T
中仅使用引用类型。尝试:
public static void InsertAndSubmit<T>(this System.Data.Linq.Table<T> tbl, T element)
where T : class
{
tbl.InsertOnSubmit(element);
tbl.Context.SubmitChanges();
}