class A { }
interface I { }
void GenericStuff<T>(T x) { }
void SpecificStuff<T>(T x) where T : A, I { }
void Start<T>(T x)
{
if (x is A && x is I)
SpecificStuff(x); // <---- Wrong type
else
GenericStuff(x);
}
上記のような状況になりました。メソッドStart()
では、単一のパラメーターを取得し、そのx
タイプに応じて、GenericStuff()
またはSpecificStuff()
メソッドを呼び出します。当然、型制約がそうするのを妨げており、それらが 2 つあるため、キャストによってそれらを回避することはできません。
これを達成する方法はありますか?