流暢な API の拡張メソッド用に 3 つのマーカー インターフェイスがあります。
interface IOne { }
interface ITwo { }
interface IOneOrTwo : IOne, ITwo { }
および次の拡張メソッド:
public static IOneOrTwo Foo (this IOne obj, string arg)
{
// do something with arg
return obj; // <- possible without cast?
}
質問:キャストせずに obj を返すことは何とか可能ですか? 通常、この状況では明示的にダウンキャストする必要がありますが、これらのインターフェイスのいずれも、基礎となるオブジェクトに何らかのメソッド/プロパティ/その他のものを要求するものではありません。
注: 実際の実装クラスは、すべてのインターフェイスを実装します。
質問 2: なぜ implementationが自動的に実装を type にもしないのIOne
ですか?ITwo
IOneOrTwo