標籤:public 動態 dynamicobject
1,自訂動態對象需要繼承DynamicObject類
2,可根據需要,重寫不同的DynamicObject方法
-----------------------------------------------------DynamicClass.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Dynamic;namespace ConsoleApplication3{ public class DynamicClass:DynamicObject { Dictionary<string, object> _dynamicData = new Dictionary<string, object>(); /// <summary> /// 為擷取成員值的操作提供實現 /// </summary> /// <param name="binder"></param> /// <param name="result"></param> /// <returns></returns> public override bool TryGetMember(GetMemberBinder binder, out object result) { bool success = false; result = null; if (_dynamicData.ContainsKey(binder.Name)) { result = _dynamicData[binder.Name]; success = true; } else { result = "Property Not Found"; success = false; } return success; } /// <summary> /// 為設定成員值的操作提供實現 /// </summary> /// <param name="binder"></param> /// <param name="value"></param> /// <returns></returns> public override bool TrySetMember(SetMemberBinder binder, object value) { _dynamicData[binder.Name]= value; return true; } }}
-----------------------------------------------------主程式
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Dynamic;namespace ConsoleApplication3{ class Program { static void Main(string[] args) { dynamic dyn = new DynamicClass(); dyn.name = "a"; dyn.aa = new Func<string,string>(r => r); dyn.name = "b"; Console.WriteLine(dyn.name+"|"+ dyn.aa("b")); //輸出:b|b Console.ReadKey(); } }}
本文出自 “程式猿的家--Hunter” 部落格,請務必保留此出處http://962410314.blog.51cto.com/7563109/1558261
自訂動態對象