ここから、動的変数は明示的に実装するインターフェイスのメソッドにアクセスできないことを学びました。T
コンパイル時に型パラメーターがわからない場合にインターフェイス メソッドを呼び出す簡単な方法はありますか?
interface I<T>
{
void Method1(T t);
}
class C<T> : I<T>
{
void I<T>.Method1(T t)
{
Console.WriteLine(t);
}
}
static void DoMethod1<T>(I<T> i, T t)
{
i.Method1(t);
}
void Main()
{
I<int> i = new C<int>();
dynamic x = i;
DoMethod1(x, 1); //This works
((I<int>)x).Method1(2); //As does this
x.Method1(3); //This does not
}
type parameter がわからないT
ので、(私の知る限り)動的変数をキャストできませんx
。DoXXX()
インターフェイスには多くのメソッドがあるため、対応するパススルー メソッドを作成したくありません。
C
編集:私は制御しておらず、またはを変更できないことに注意してくださいI
。