ここでexpando オブジェクトに関する記事を読みましたが、別のことを達成したいと考えています。
実行時に動的プロパティを持つプロパティオブジェクトを追加し、それに値を入れてから後で取得したい:
private static readonly ConditionalWeakTable<object, ExpandoObject> props = new ConditionalWeakTable<object, ExpandoObject>();
public static void AddDataExtension(this object key, dynamic value)
{
props.Add(key, value);
}
public static dynamic GetDataExtension(this object key)
{
ExpandoObject ex = null;
return props.TryGetValue(key, out ex);
}
使用法:
'Insert data at runtime'
instance.AddDataExtension("Hello", "hi");
'Get the data at runtime'
instance.GetDataExtension("Hello")
しかし、私はこのエラーを受け取ります:
The best overloaded method match for 'System.Runtime.CompilerServices.ConditionalWeakTable<object,System.Dynamic.ExpandoObject>.Add(object, System.Dynamic.ExpandoObject)' has some invalid arguments
このプロパティを悪用したと思いますが、これを達成することは可能ですか? はいの場合、どのように?助けてください。
編集
完全なクラスは次のとおりです。
public static class instance
{
private static readonly ConditionalWeakTable<object, ExpandoObject> props = new ConditionalWeakTable<object, ExpandoObject>();
public static void AddDataExtension(this object key, dynamic value)
{
props.Add(key, value);
}
public static dynamic GetDataExtension(this object key)
{
ExpandoObject ex = null;
return props.TryGetValue(key, out ex);
}
}
私が達成したいのはこれです:
私はランダムな変数を持っています、例えば " photo_01, photo_12, photo_15, name_01, name_02, age_01, age_02
"
可能であれば、この方法でメソッドを使いたいです:
id = <fetch from dbase>
instance.AddDataExtension("photo_" + id, byte[]);
次に、値を取得します。
instance.GetDataExtension("photo_" + id)