У вас может быть интерфейс, который определяет эти свойства, а затем ваши классы сущностей реализуют этот интерфейс:
public interface IEntity
{
string Code { get; set; }
string Name { get; set; }
}
Теперь вы можете добавить общее ограничение к вашему методу:
public static T MapDataReaderToEntity<T>(IDataReader reader) where T : IEntity, new()
{
T entity = new T();
// More code here...
}
Обратите внимание, что вам также необходимо ограничение new()
для фактического создания новой сущности; это означает, что любой аргумент универсального типа будет иметь конструктор без параметров.