共通の基本型と2つの派生型を持つC#クラス階層があります。私はこのような基本クラス何かの抽象メソッドを宣言します:型は "this"型でなければならないという制約のあるメソッドでは#genericsです。
public abstract IEnumerable<T> GetSiblings<T>() where T : MyBaseClass
を...と私は、この方法はそれぞれの、Tはその派生型のタイプであるような派生クラスで実装されるようにしたいです派生クラスAの派生型、すなわち、の:
public override IEnumerable<A> GetSiblings<A>() { ... }
...と派生クラスBで...
public override IEnumerable<B> GetSiblings<B>() { ... }
別の言い方をするように、各派生クラスはメソッドを実装する必要がありますそれはIを返す同じタイプのアイテムを列挙できます。 C#でこれを実装する方法はありますか?
特定の状況では具体的な型が必要なので、ベース型と派生型で既に実装されているインタフェースは変更できません。 –
'dynamic'の戻り値型を使用できませんでしたか?確かに、コンパイラの最適化は失われますが、いくつかの問題に答えることができ、どのタイプのTでも返すことができます。それに対処するのは消費者の責任です。 – MetalPhoenix
@ MetalPhoenix:あなたは 'object'を返すだけかもしれません... –