//自定義的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
自定義的DynamicObject類_.NET4.0新特性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.