Одним из обходных путей будет использование двух параметров универсального типа (для базового класса), таких как
public abstract class baseCrudDao<T, U> : ICrudDao<T> where U : class, T: U
{
...
public baseCrudDao()
{
_context = new CustomerWebPortalEntities();
_entity = _context.CreateObjectSet<U>(); <-- error at here, only accept base type
}
...
}
Использовать Message вместо U. Если у вас много типов, и не у всех есть отношения наследования, тогдаограничение T: U не сработает, и вам, возможно, нужно использовать ограничение T: class.Я также предлагаю создать еще один базовый класс скелета, который будет использоваться для других типов, таких как
public abstract class base2CrudDao<T> : baseCrudDao<T, T>
, чтобы вам не приходилось указывать параметр U для классов, которые не имеют отношения наследования.