在C#中访问属性时如何向动态对象添加属性

时间:2012-07-12 09:43:16

标签: c# dynamic

我想在访问它之前在动态Object中创建一个属性。 例如,有一个对象X.一个非现有属性“SomeProperty”在X上访问如下,

var testProperty = X.SomeProperty;

我想在访问时创建X.SomeProperty。 是否有可能在C#动态?

1 个答案:

答案 0 :(得分:3)

public class X : DynamicObject
{
    Dictionary<string, object> dictionary = new Dictionary<string, object>();

    public override bool TryGetMember(
        GetMemberBinder binder, out object result)
    {
        string name = binder.Name.ToLower();

        return dictionary.TryGetValue(name, out result);
    }

    public override bool TrySetMember(SetMemberBinder binder, object value)
    {
        dictionary[binder.Name.ToLower()] = value;
        return true;
    }
}


dynamic obj = new X();
obj.SomeProperty = "Test";
Console.WriteLine(obj.SomeProperty);