"使用反射动态添加C#类字段"\n在C#中,类的字段是在编译时确定的,无法动态新增。但是,可以通过使用反射来动态地向类中添加字段。下面是一个示例代码:\n\ncsharp\nusing System;\nusing System.Reflection;\nusing System.Reflection.Emit;\n\npublic class MyClass\n{\n public int MyField1 { get; set; }\n}\n\npublic class Program\n{\n public static void Main(string[] args)\n {\n // 创建一个动态程序集\n AssemblyName assemblyName = new AssemblyName(\"DynamicAssembly\");\n AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);\n\n // 创建一个动态模块\n ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(\"DynamicModule\");\n\n // 创建一个动态类型\n TypeBuilder typeBuilder = moduleBuilder.DefineType(\"DynamicClass\", TypeAttributes.Public);\n\n // 添加一个字段\n FieldBuilder fieldBuilder = typeBuilder.DefineField(\"MyField2\", typeof(int), FieldAttributes.Public);\n\n // 创建类型并获取类型的实例\n Type dynamicType = typeBuilder.CreateType();\n object dynamicObject = Activator.CreateInstance(dynamicType);\n\n // 设置字段的值\n dynamicType.GetField(\"MyField2\").SetValue(dynamicObject, 10);\n\n // 输出字段的值\n Console.WriteLine(dynamicType.GetField(\"MyField2\").GetValue(dynamicObject));\n }\n}\n\n\n在上面的示例中,我们使用反射和动态模块来创建一个新的类型,并向该类型中添加一个字段。然后,我们通过反射设置和获取该字段的值。输出结果将是10,表示成功地向类中动态添加了一个字段。


原文地址: https://www.cveoy.top/t/topic/p1ck 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录