У меня есть все виды классов, который представляет объекты, например:Возможно ли иметь общий метод с ограничением конструктора с параметром?
public class Person
{
public int PersonID { get; set; }
public string PersonName { get; set; }
public bool IsSystemManager { get; set; }
public bool IsSystemAdmin { get; set; }
public Person() { }
public Person(DataRow row)
{
PersonID = (int)row["person_id"];
PersonName = row["person_name"] as string;
IsSystemManager = (bool)row["is_manager"];
IsSystemAdmin = (bool)row["is_admin"];
}
}
И я хочу, чтобы иметь расширение для DataTable
, который превращает его в список объекта класса, как это:
public static List<T> ToObjectList<T>(this DataTable table) where T : new(DataRow dr) //this is a compilation error
{
List<T> lst = new List<T>();
foreach (DataRow row in table.Rows)
lst.Add(new T(row));
return lst;
}
Но у меня не может быть ограничения для конструктора с параметром DataRow
.
Есть ли способ иметь такой способ расширения?
@ haim770 он возвращает 'List' а не 'List 'и T предполагается, что в конструкторе DAtaRow в конструкторе –
проблема будет отложена, я бы настоятельно рекомендовал не передавать datarow в ctor, а взрывать требуемые параметры (имея по одному для каждого члена ct или наборы), вы можете передать datarow, который заставляет вызов ctor сбой легко – nozzleman