自定义的DynamicObject类_.NET4.0新特性

来源:互联网 发布:linux怎么解压war文件 编辑:程序博客网 时间:2024/06/04 23:04
//自定义的DynamicObject类public class MyDynamicObject : DynamicObject{    private Dictionary<string, object> m_Values = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);    public MyDynamicObject()    {    }     public void SetMember(string propertyName, object value)    {        if (value == DBNull.Value)        {            m_Values[propertyName] = null;        }        else        {            m_Values[propertyName] = value;        }    }    public override bool TryGetMember(GetMemberBinder binder, out object result)    {        if (m_Values.ContainsKey(binder.Name))        {            result = m_Values[binder.Name];        }        else        {            //throw new System.MissingMemberException("The property " + binder.Name + " does not exist.");            result = null;        }        return true;    }    public override bool TrySetMember(SetMemberBinder binder, object value)    {        SetMember(binder.Name, value);        return true;    }}//在程序中调用 #region DynamicObject        dynamic myDO = new MyDynamicObject();        myDO.NAME="Tea";//没有定义NAME属性,却可以动态调用赋值,        myDO.SetMember("age", 23);        string name = myDO.NAME;        int age = myDO.age;//不需要类型装换 #endregion