это может быть где-то еще под универсальными типами, но я не могу следовать многим ответам. Извините, если это повторение другого вопроса.реализация абстрактного класса с использованием производных типов
следующий код для приложения на три слоя с данными, представления и логики слоев
в моем слое данных у меня есть коллекция из entitys и базовую сущность
public abstract class BaseEntity
{
int LastModifiedBy { get; set; }
DateTime LastModifiedDate{get;set;}
}
public partial class DocNum: BaseEntity
{
}
public partial class DataList: BaseEntity
{
}
в моей логике слоя I имеют класс BaseDTO для передачи данных. вот код для его
public abstract class BaseDTO
{
protected abstract void ConvertFromEntity(BaseEntity entity);
public abstract void ConvertToEntity();
}
Я затем и создать класс реализации Docnum на его основе в следующем
public class DTODocNum : BaseDTO
{
//properties here
public DTODocNum()
{
}
public DTODocNum(DocNum entity)
{
ConvertFromEntity(entity)
}
protected override void ConvertFromEntity(DocNum entity)
{
throw new NotImplementedException();
}
public override void ConvertToEntity()
{
throw new NotImplementedException();
}
}
однако это не будет компилироваться говорить мне, что ни один подходящий метод для переопределения не был найден. Я знаю, что я могу сделать следующее, но я хочу thhis метод принимает только Docnum сущность из уровня данных:
protected override void ConvertFromEntity(BaseEntity entity)
{
throw new NotImplementedException();
}
Я также попытался общего типа со следующими
public abstract class BaseDTO
{
protected abstract void ConvertFromEntity<T>(T entity);
public abstract T ConvertToEntity<T>();
}
и следующее в производном классе:
protected override void ConvertFromEntity<T>(T entity) where T:DocNum
{
throw new NotImplementedException();
}
но теперь ошибка определяется является Ограничение для переопределения и явных методов реализации интерфейса унаследованы от базы метод, поэтому они не могут быть указаны напрямую
Может ли кто-нибудь помочь мне реализовать это решение, чтобы DTODocNum мог компилироваться, ссылаясь на тип сущности?
Ok, которая работает лечить ... вау спасибо за быстрый ответ – ChrisOBrien