1
protected void saveform<T>(System.Data.Linq.Table<T> table, bool submit) 
    where T : class
{
    try
    {
        using (DataContext dc = new DataContext())
        {
            var form = (from f in table
                        join r in dc.tbRecords on f.recordId equals r.recordId
                        where r.pID == pId
                        select new {f, r}).SingleOrDefault();
        ...

但是我在编译时收到了这个错误信息:

“T”不包含“recordId”的定义,并且找不到接受“T”类型的第一个参数的扩展方法“recordId”(您是否缺少 using 指令或程序集引用?)

我该如何处理?谢谢。

4

1 回答 1

2

你怎么知道 T 有一个 'recordId' 属性?它只被限制为一个对象......

一个可能的解决方案是将您的实体包装在一个接口中:

public interface IRecord
{
    public int recordId { get; }
}

您可以使用部分类来使您的实体实现此接口。

然后,将方法上的泛型类型约束到该接口,例如

protected void saveform<T>(System.Data.Linq.Table<T> table, bool submit) where T : IRecord
于 2013-02-21T16:53:38.950 回答