ある ID をタイプにマップする辞書があるとします。
Dictionary<int, Type> processIdToTypeMapping
辞書を反復処理し、辞書で指定された型にオブジェクトをキャストしようとしています。オブジェクトは MSMQ から取得されます。
辞書を反復する方法は次のとおりです。
foreach (KeyValuePair<int, Type> processIdToType in processIdToTypeMapping)
私はジェネリックを使用しようとしました:
private void CreateObject<T>()
{
FooBase fooBase = message.Body as T;
}
ただし、コンパイル時に型を知る必要があります。次のように CreateObject() を呼び出すことはできません。
CreateObject<typeof(processIdToType.Value)>(); // That can't work.
ChangeType() を使用してみました:
private void CreateObject(Type fooType)
{
FooBase fooBase = Convert.ChangeType(message.Body, fooType);
}
しかし、変換できないというコンパイル時エラーが発生します。
そして、私は次のように試しました:
private void CreateObject(Type fooType)
{
FooBase fooBase = message.Body as typeof(fooType);
}
message.Body を辞書の型にキャストするにはどうすればよいですか?