من کد رو به صورت زیر تغییر دادم
تا اینجا درست کار میکنه حال میخواهم از کلاسی که برای من ایجاد میکند یک لیست ایجاد کنم و بتونم بهش مقدار بدم. ولی هر چی تلاش کردم نتونستم کلاس خودم رو ایجاد کنم. ممنون میشم راهنمایی کنید
var ctx = new Entities(); var Fields = ctx.ENTITIES_FEILDS.ToList(); var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( name: new AssemblyName("Demo"), access: AssemblyBuilderAccess.Run); var moduleBuilder = assemblyBuilder.DefineDynamicModule(name: "Module"); var typeBuilder = moduleBuilder.DefineType(name: Fields.First(c => c.FEILD_ID == 1).ENTITIES.ENTITY_NAME, attr: TypeAttributes.Public); foreach (var item in Fields) { switch (item.FEILD_TYPE) { case 0://int { var intField = typeBuilder.DefineField(fieldName: string.Format("_{0}", item.FEILD_NAME), type: typeof(string), attributes: FieldAttributes.Private); var intProperty = typeBuilder.DefineProperty( name: item.FEILD_NAME, attributes: PropertyAttributes.HasDefault, returnType: typeof(string), parameterTypes: null); // خاصیت پارامتر ورودی ندارد //تعریف گت var intpropertyGetMethod = typeBuilder.DefineMethod( name: string.Format("get_{0}", item.FEILD_NAME), attributes: MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig, returnType: typeof(string), parameterTypes: Type.EmptyTypes); // اتصال گت متد به خاصیت عددی intProperty.SetGetMethod(intpropertyGetMethod); //تعریف ست var propertySetMethod = typeBuilder.DefineMethod(name: string.Format("set_{0}", item.FEILD_NAME), attributes: MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig, returnType: typeof(void), parameterTypes: new[] { typeof(string) }); //اتصال ست متد intProperty.SetSetMethod(propertySetMethod); // بدنه گت متد در اینجا تعریف خواهد شد var propertyGetMethodIL = intpropertyGetMethod.GetILGenerator(); propertyGetMethodIL.Emit(OpCodes.Ldarg_0); // بارگذاری اشارهگری به وهلهای از کلاس جاری در پشته propertyGetMethodIL.Emit(OpCodes.Ldfld, intField); // بارگذاری فیلد نام propertyGetMethodIL.Emit(OpCodes.Ret); //بدنه ست متد در اینجا تعریف شده است var propertySetIL = propertySetMethod.GetILGenerator(); propertySetIL.Emit(OpCodes.Ldarg_0); propertySetIL.Emit(OpCodes.Ldarg_1); propertySetIL.Emit(OpCodes.Stfld, intField); propertySetIL.Emit(OpCodes.Ret); } break; case 1://string { } break; } } var t = typeBuilder.CreateType(); var instance = Activator.CreateInstance(t); var type = instance.GetType(); //تغییر مقدار یک خاصیت var setNameMethod = type.GetMethod("set_CoOrder"); setNameMethod.Invoke(obj: instance, parameters: new[] {"1"}); // دسترسی به خاصیت نام var nProperty = t.GetProperty("CoOrder"); // و دریافت مقدار آن برای نمایش var result = nProperty.GetValue(instance, null); Console.WriteLine(result); Console.ReadKey();