我是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&gt; .Entity”。
如何写得正确?
答案 0 :(得分:2)
你要做的事是不可能的。相反,使用Composition而不是继承。
点击此处查看解决方法Nested class that inherits from its generic parent class