単一のジェネリックメソッドを持つインターフェースがあるとします。
public interface IExtender
{
T GetValue<T>(string tag);
}
そして、「タグ」パラメータに応じて2つの異なるタイプ(BとC)のインスタンスを返すその単純な実装A:
public class A : IExtender
{
public T GetValue<T>(string tag)
{
if (typeof(T) == typeof(B) && tag == null)
return (T)(object) new B();
if (typeof(T) == typeof(C) && tag == "foo")
return (T)(object) new C();
return default(T);
}
}
ダブルキャストを回避することは可能(T)(object)
ですか?または、コンパイラに「このキャストは実行時に失敗しないと確信しています。最初にオブジェクトにキャストせずに実行させてください」と伝える方法はありますか。