किसी मौजूदा प्रकार में कोई संपत्ति जोड़ना संभव नहीं है, लेकिन आप Reflection.Emit का उपयोग कर रनटाइम पर एक नया प्रकार बना सकते हैं। यह बहुत जटिल सामान है, और यह कुछ इस तरह चला जाता है:
AssemblyBuilder assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(
assemblyName , AssemblyBuilderAccess.Run, assemblyAttributes);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("ModuleName");
TypeBuilder typeBuilder = moduleBuilder.DefineType(
"MyNamespace.TypeName" , TypeAttributes.Public);
typeBuilder.DefineDefaultConstructor(MethodAttributes.Public);
// Add a method
newMethod = typeBuilder.DefineMethod("MethodName" , MethodAttributes.Public);
ILGenerator ilGen = newMethod.GetILGenerator();
// Create IL code for the method
ilGen.Emit(...);
// ...
// Create the type itself
Type newType = typeBuilder.CreateType();
इस कोड को सिर्फ एक नमूना है। इसमें त्रुटियां हो सकती हैं।
आप System.CodeDom का उपयोग कर रनटाइम पर सी # स्रोत कोड संकलित करके कक्षाएं भी उत्पन्न कर सकते हैं, लेकिन मुझे इसके बारे में बहुत कुछ पता नहीं है।
स्रोत
2009-05-30 09:02:28
क्षमा मीटर rwwilden में चिह्नित किए गए यह जवाब के रूप में है के लिए देख रहा था के बाद से इस सवाल का जवाब और अधिक प्रयास से बनाया गया था (यू के दोनों सोचा है एक ही समाधान intorduced) – user88637
कोई समस्या नहीं है। मैं मानता हूं कि यह मेरे अपने उत्तर से थोड़ा अधिक विस्तृत है। –