2017-01-19 7 views
2

私はC#(私はJava開発者です)に新しく、genericsに関する質問があります。次の私がこれらのクラス拡張してみてくださいクラスを他のジェネリッククラスのネストからどのように拡張できますか?

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" type can't be used like a parameter of "TEntity" type in the universal type or method "FlowChartBuilder". There isn't a transformation-packaging or a transformation of a type parameter from the "TEntity" to the "PM.Utils.Diagram.FlowChartBuilder>.Entity".

それが正しい書き方?

+2

はこちら

チェックがクールになる –

+1

申し訳ありませんが、私は気付きませんでした。私はすでにそれを翻訳しました。 –

+1

私はこれがこのhttp://stackoverflow.com/questions/21566701/nested-class-that-inherits-from-its-generic-parent-classの複製であると思うかもしれません。それは、継承を包み込みで置き換えることを指示します。 –

答えて

2

あなたがしようとしていることは不可能です。代わりにComposition over継承を使用してください。あなたは英語で自分の誤りを投稿することができれば、回避策Nested class that inherits from its generic parent class

+0

申し訳ありませんが、私はジャークをしました。それは私の場合には合いません。または私はそれを得た悪い。 –

+0

ユースケースを提供できますか?あなたはそのクラスを継承することができませんので、最初にこれをしたい理由を教えてください。 –

+0

私は、これらのネストされたクラスのプライベートメンバーにアクセスすることができます。たぶん、C#には別の方法がありますが、わかりません。 –

関連する問題