【发布时间】:2025-11-29 10:05:01
【问题描述】:
我是 C# 新手(我是一名 Java 开发人员)并且对泛型有疑问。我有一个带有嵌套类的泛型类:
public class FlowChartBuilder<TEntity, TLink>
where TEntity : FlowChartBuilder<TEntity, TLink>.Entity
where TLink : FlowChartBuilder<TEntity, TLink>.Link
{
public abstract class Link { }
public abstract class Entity { }
}
接下来我尝试扩展这些类:
public class ChartEntity<T>: FlowChartBuilder<ChartEntity<T>, ChartLink>.Entity
{
}
public class ChartEntity<T>: FlowChartBuilder<ChartEntity<T>, ChartLink<ChartEntity<T>>>.Entity
{
}
但我得到一个错误:
“TEntity”类型不能像“TEntity”类型的参数一样在 通用类型或方法“FlowChartBuilder”。没有 来自“TEntity”的转换包装或类型参数的转换 到“PM.Utils.Diagram.FlowChartBuilder>.Entity”。
如何正确写法?
【问题讨论】:
-
如果你能用英文发布你的错误会很酷
-
对不起,我只是没注意到。我已经翻译过了。
-
我认为这是*.com/questions/21566701/… 的副本,您可能会在其中找到答案。它告诉用封装替换继承。
-
如果你只是想让它们公开,为什么要嵌套这些类? *.com/a/7984625/302918
-
@BrunoBelmondo,非常感谢!这是我需要的。