static void Main(string[] args) { var da = AppDomain.CurrentDomain.DefineDynamicAssembly( new AssemblyName("dyn"), // call it whatever you want AssemblyBuilderAccess.Save); var dm = da.DefineDynamicModule("dyn_mod", "dyn.dll"); var dt = dm.DefineType("dyn_type"); var type = typeof(KeyValuePair <string, string>); var pi = type.GetProperty("Key"); var lambdaValueType = PropertyInvoker.GetExpressionLambda <KeyValuePair <string, string> >(pi); lambdaValueType.CompileToMethod(dt.DefineMethod("KVP", MethodAttributes.Public | MethodAttributes.Static)); var lambdaRefType = PropertyInvoker.GetExpressionLambda <TRef>(typeof(TRef).GetProperty("PropRef")); lambdaRefType.CompileToMethod(dt.DefineMethod("TRef_PropRef", MethodAttributes.Public | MethodAttributes.Static)); var lambdaRefType2 = PropertyInvoker.GetExpressionLambda <IncludeExclude>(typeof(IncludeExclude).GetProperty("Id")); lambdaRefType2.CompileToMethod(dt.DefineMethod("IncludeExclude_Id", MethodAttributes.Public | MethodAttributes.Static)); dt.CreateType(); da.Save("dyn.dll"); }
public override SetMemberDelegate CreateSetter(PropertyInfo propertyInfo) { return (E.Common.PclExport.Instance.SupportsEmit ? PropertyInvoker.SetEmit(propertyInfo) : E.Common.PclExport.Instance.SupportsExpression ? PropertyInvoker.SetExpression(propertyInfo) : base.CreateSetter(propertyInfo)); }
public override GetMemberDelegate <T> CreateGetter <T>(PropertyInfo propertyInfo) { return (E.Common.PclExport.Instance.SupportsEmit ? PropertyInvoker.GetEmit <T>(propertyInfo) : E.Common.PclExport.Instance.SupportsExpression ? PropertyInvoker.GetExpression <T>(propertyInfo) : base.CreateGetter <T>(propertyInfo)); }