自定义的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