1, ExpandoObject
1 DynamicExpobj =NewExpandoObject ();2Expobj.firstname ="Daffy";3Expobj.lastname ="Duck";4Console.WriteLine (Expobj.firstname +" "+expobj.lastname);5Func<datetime,string> Gettomorrow = Today and today. AddDays (1). ToShortDateString ();6Expobj.gettomorrowdate =Gettomorrow;7Console.WriteLine ("tomorrow is {0}", Expobj.gettomorrowdate (DateTime.Now));8 9Expobj.friends =NewList<person>();TenEXPOBJ.FRIENDS.ADD (NewPerson () {FirstName ="Bob", LastName ="Jones" }); OneEXPOBJ.FRIENDS.ADD (NewPerson () {FirstName ="Robert", LastName ="Jones" }); AEXPOBJ.FRIENDS.ADD (NewPerson () {FirstName ="Bobby", LastName ="Jones" }); - - foreach(Person friendinchexpobj.friends) the { -Console.WriteLine (friend. FirstName +" "+friend. LastName); -}
2, DynamicObject
1 classCusdynamicobject:dynamicobject2 {3dictionary<string,Object> _dynamicdata =Newdictionary<string,Object>();4 5 Public Override BOOLTrygetmember (GetMemberBinder binder, out Objectresult)6 {7 BOOLSuccess =false;8result =NULL;9 if(_dynamicdata.containskey (binder). Name))Ten { Oneresult =_dynamicdata[binder. Name]; ASuccess =true; - } - Else theresult ="Property not found!"; - - returnsuccess; - } + - Public Override BOOLTrysetmember (SetMemberBinder Binder,Objectvalue) + { A_dynamicdata[binder. Name] =value; at return true; - } - - Public Override BOOLTryinvokemember (Invokememberbinder Binder,Object[] args, out Objectresult) - { - DynamicMETHOD =_dynamicdata[binder. Name]; inResult = Method (DateTime) args[0]); - returnResult! =NULL; to } + -}
C # Dynamic Object