Добавить ограничение where T : new()
:
public static void UpdateTable<T>(
this DataContext context, Table<T> tbl,
IEnumerable<BookData> data
) where T : class, new() {
// details
}
Обратите внимание, что T
не может быть абстрактным, и ограничение new
должно быть последним в списке.
Ого, только что заметил это:
context.GetTable<T>().InsertOnSubmit(new T
{
bName = item.bookName
aName = item.authorName,
}
);
Этого нельзя избежать, если вы не добавите ограничение к T
, чтобы компилятор знал, что T
имеет свойства с именами bName
и aName
. Как минимум, вам нужно указать
where T : BookData, new()
где BookData
- это класс, для которого определены эти свойства. Это будет указывать, что T
равен BookData
или является производным от BookData
и что он имеет открытый конструктор без параметров. В этом случае вы можете избавиться от ограничения where T : class
. В качестве альтернативы вы можете указать
where T : IBookData, new()
где IBookData
- интерфейс, определяющий два используемых вами свойства. Это ограничение указывает, что T
является типом, который реализует IBookData
, и что он имеет открытый конструктор без параметров.
Учитывая это, я не понимаю, почему вы делаете это в общем.