次のコードを検討してください。
class MyClass
{
}
class MyClass2 : MyClass
{
}
private void Foo(MyClass cl)
{
//cl is actually MyClass2 instance
TestGeneric(cl);
}
private void TestGeneric<T>(T val)
{
//do smth
}
Foo()を呼び出した後、 TestGeneric の T は MyClass2ではなくMyClassになります。valをMyClass2インスタンスとして扱うにはどうすればよいですか? 前もって感謝します。
Upd: オブジェクトがMyClass2 ctorを使用して作成されたことを実際には知りませんが、val.GetType() を呼び出すことでこれを推測できるため、単純なMyClass2は機能しません。