是否有.NET任何方式结合性质的字典来在运行时,即,例如,如,如果基对象类有属性,如:添加expando属性的类型的对象在运行时,在c#
public IDictionary Items { get; }
我想出了涉及静态字典和扩展方法
void Main()
{
var x = new object();
x.Props().y = "hello";
}
static class ExpandoExtension {
static IDictionary<object, dynamic> props = new Dictionary<object, dynamic>();
public static dynamic Props(this object key)
{
dynamic o;
if (!props.TryGetValue(key, out o)){
o = new ExpandoObject();
props[key] = o;
}
return o;
}
}
一个解决方案,但这个从得到GC'd作为道具收集停止对象保持一个参考。实际上,这对我的特殊使用情况来说确实很好,因为我可以在完成使用它们的特定事件后手动清除道具,但是我想知道,是否有一些巧妙的方法可以将在允许垃圾收集的同时将ExpandoObject转换为密钥?
我必须承认我不知道这个存在。 – 2011-03-05 14:42:45
谢谢你,那是完美的 – mcintyre321 2011-03-05 15:03:29