У меня есть дюжина методов в моем проекте (C# 2.0)которые выглядят так:
internal bool ValidateHotelStayEntity(DataRow row)
{
return (new HotelStayEntity(row)).Validate();
}
... но для разных классов «сущностей». (Хорошо, не совсем тривиально, я упростил код здесь.)
Это выглядит как хороший кандидат для универсальных шаблонов, и я придумал следующее:
internal bool ValidateEntity<T>(DataRow row) where T : EntityBase
{
return (new T(row)).Validate();
}
И, конечно, я получаю ошибку «Не удается создать экземпляр параметра типа 'T', потому что у него нет ограничения new()».
Проблема в том, что эти классы 'entity' не имеют ни открытого конструктора без параметров, ни способа добавления данных 'row' впоследствии. И поскольку EntityBase является частью структуры компании, я не могу ее контролировать (т.е. я не могу ее изменить).
Есть ли способ обойти это?