que tienen una docena de métodos en mi proyecto (C# 2.0) que se parecen a esto:genéricos sin estrenar()
internal bool ValidateHotelStayEntity(DataRow row)
{
return (new HotelStayEntity(row)).Validate();
}
... pero por diferentes clases de 'entidad'. (Bueno, no es tan trivial, he simplificado el código aquí.)
Parece un buen candidato para los genéricos y se me ocurrió esto:
internal bool ValidateEntity<T>(DataRow row) where T : EntityBase
{
return (new T(row)).Validate();
}
Y, por supuesto, me sale el " No se puede crear una instancia del tipo parametrer 'T' porque no tiene el error new() constraint ".
El problema es que estas clases de "entidad" no tienen un constructor público sin parámetros, ni una forma de agregar los datos de la "fila" posteriormente. Y como EntityBase es parte del marco de trabajo de la compañía, no tengo control sobre él (es decir, no puedo cambiarlo).
¿Hay alguna forma de evitar esto?
No tengo tiempo para un ejemplo ahora, pero puede crear un método de fábrica genérico que se pueda pasar por la fila. –
¿Por qué estás pasando DataRows en lugar de tus Entidades? ¿No deberían las Entidades haber sido validadas mucho antes de que sean tratadas como DataRows? –
No eran realmente DataRows, eran obsequios similares a DataRow que 'simplifiqué' para esta publicación. No quería desviarme para explicar el marco impuesto con el que tengo que lidiar. –