public static Expression <Func <mDictionary> > NestedProperty(busMSSPerson aobjPerson) { var expectedType = typeof(mDictionary); var ctor = Expression.New(expectedType); var local = Expression.Parameter(expectedType, "obj"); var KeyExpressionGetter = Expression.Call(local, expectedType.GetMethod("SetVal"), Expression.Constant("KeyName1"), Expression.Constant("ValName1")); var block = Expression.Block( new[] { local }, Expression.Assign(local, ctor), KeyExpressionGetter, local ); return(Expression.Lambda <Func <mDictionary> >(block)); }
static void Main(string[] args) { // var fn = Sample.BuildLambdaAndReturnDictionaryExpression(); // mDictionary result = fn.Compile().DynamicInvoke() as mDictionary; var person = new busMSSPerson() { FirstName = "Sagitec", LastName = "Solutions", PersonID = 1, ibusPersonPrimaryPhone = new busPersonPrimaryPhone() { icdoPersonPhone = new cdoPersonPhone() { phone_number = "12345678" } }, ibusPersonAlternatePhone = new busPersonPrimaryPhone() { icdoPersonPhone = new cdoPersonPhone() { phone_number = "87654321" } }, iclbAddress = new Collection <busPersonAddress>() { new busPersonAddress() { Address1 = "Address1Item1", Address2 = "Address2Item1", ContactPerson = new busMSSPerson() { FirstName = "sample name1", LastName = "Last Name1" } }, new busPersonAddress() { Address1 = "Address1Item2", Address2 = "Address2Item2", ContactPerson = new busMSSPerson() { FirstName = "sample name2", LastName = "Last Name2" } }, new busPersonAddress() { Address1 = "Address1Item3", Address2 = "Address2Item3", ContactPerson = new busMSSPerson() { FirstName = "sample name3", LastName = "Last Name3" } }, new busPersonAddress() { Address1 = "Address1Item4", Address2 = "Address2Item4", ContactPerson = new busMSSPerson() { FirstName = "sample name4", LastName = "Last Name4" } }, new busPersonAddress() { Address1 = "Address1Item5", Address2 = "Address2Item5", ContactPerson = new busMSSPerson() { FirstName = "sample name5", LastName = "Last Name5" } }, } }; //ParseXMLAndCreateFunction(person, "getcontactinfo.xml"); //var result1 = Sample.PropertySette1() as IExpressionResult; ////var expr = result1.ToExpression(); ////var result2compiled = expr.Compile();//this goes to cache ////var result2 = result2compiled.DynamicInvoke(person); //var result3 = result1.ToLambda<Func<busMSSPerson, mDictionary>>()(person); //var str2 = Newtonsoft.Json.JsonConvert.SerializeObject(result3); //var looptestresult = Sample.ForEachSample() as IExpressionResult; //var loopexpstr = looptestresult.ToString(); //var loopexpr = looptestresult.ToExpression(); //var loopresult2 = loopexpr.Compile().DynamicInvoke(person); //var str5 = Newtonsoft.Json.JsonConvert.SerializeObject(loopresult2, Formatting.Indented, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); new FilterProcessor().ParseFilterFiles(person); return; // ParseXMLAndCreateFunction(person, "newGetContactInfo.xml"); }