Универсальные шаблоны без new()

У меня есть дюжина методов в моем проекте (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 является частью структуры компании, я не могу ее контролировать (т.е. я не могу ее изменить).

Есть ли способ обойти это?

7
задан Peter Trevor 26 January 2012 в 19:01
поделиться