gpt4 book ai didi

c# - 抽象泛型父类可以自动获得子(扩展)类型吗?

转载 作者:行者123 更新时间:2023-11-30 22:34:30 24 4
gpt4 key购买 nike

在我的 C# 项目中,我有两个抽象的通用父类,然后有多个继承它们的子类。问题是我将子类型传递给父泛型,并生成一些看起来很傻的类和方法定义。

在通用父类中有没有办法获取继承它们的类的类型?因此,不必在 DTOBase 中传递类型,而是声明它将是 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>

最佳答案

不,当你有一个不能轻易用任何其他方式表达的类型关系时,这种事情是相当普遍的。我的 Protocol Buffers 端口中有类似的东西:

public interface IMessage<TMessage, TBuilder> 
: IMessage<TMessage>, IMessageLite<TMessage, TBuilder>
where TMessage : IMessage<TMessage, TBuilder>
where TBuilder : IBuilder<TMessage, TBuilder>

它既烦人又丑陋,但它可以完成工作。很抱歉没有给你更好的消息。

关于c# - 抽象泛型父类可以自动获得子(扩展)类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com