(文字列、オブジェクト)の大きな辞書があります。ディクショナリの値はさまざまなタイプです。実行時にのみ、(string、int)または(string、string)のディクショナリで値の正確なタイプを見つけることができます。実行時に、辞書の値を対応する強く型付けされたオブジェクトに割り当てる必要があります。これは単純化された問題です。キャストを行う型クラスを使おうとしています。私は動作しないこのコードを持っています:
static void Main(string[] args)
{
var values = new Dictionary<string, object>
{
{ "123", "test"},
{"12", 123}
};
var result = new Dictionary<string, object> ();
Type dict = values.GetType();
Type typedCast = typeof(TypedClass<>).MakeGenericType(new [] { dict });
MethodInfo method = typedCast.GetMethod("GetTypedValue",
BindingFlags.Static | BindingFlags.Public,
null,
new[]
{
typeof(object),
typeof(object).MakeByRefType()
},
null);
method.Invoke(null, new[]{values, result});
}
public class TypedClass<T>
{
public static void GetTypedValue(object value, out object obj)
{
obj = (T)Convert.ChangeType(value, typeof(T));
}
}
GetTypedValueメソッドの内部には、正しいタイプのobj値が表示されますが、このメソッドの外部では、out変数に値がありません。私が間違っていることを教えてください。