抽象泛型父类可以自动获得子(扩展)类型吗?
本文关键字:扩展 类型 父类 泛型 抽象 | 更新日期: 2023-09-27 18:11:25
在我的c#项目中,我有两个抽象的通用父类,然后有多个继承它们的子类。问题是,我正在将子类型传递给父泛型,这使得一些愚蠢的类和方法定义。
是否有一种方法在泛型父类中获得继承它们的类的类型?因此,不必在DTOBase中传递type,而是将其声明为DTOBase的第一个子类型。
父类定义
public abstract class DTOBase<T> : INotifyPropertyChanged, IMergeable<T>
public abstract class ModelBase<T,U> : INotifyPropertyChanged, ITrackable, IMergeable<U>
where T : DTOBase<T>
where U : ModelBase<T,U>
子类示例
public class MenuGroup : DTOBase<MenuGroup>
public class MenuGroup : ModelBase<DTOs.MenuGroup, MenuGroup>
不,当你有一个类型关系,不能轻易地用其他方式表示时,这种事情是相当常见的。我在我的协议缓冲区端口有类似的东西:
public interface IMessage<TMessage, TBuilder>
: IMessage<TMessage>, IMessageLite<TMessage, TBuilder>
where TMessage : IMessage<TMessage, TBuilder>
where TBuilder : IBuilder<TMessage, TBuilder>
这是恼人和丑陋的,但它可以完成工作。很抱歉没有更好的消息。