मुझे मौजूदा इंटरफ़ेस के रूप में सभी सदस्यों के साथ रन-टाइम पर एक नया इंटरफ़ेस उत्पन्न करने की आवश्यकता है, सिवाय इसके कि मैं कुछ तरीकों से अलग-अलग विशेषताओं को रखूंगा (कुछ गुण पैरामीटर रन-टाइम तक ज्ञात नहीं हैं)। यह कैसे प्राप्त किया जा सकता है?.NET के प्रतिबिंब का उपयोग करना। इंटरफ़ेस उत्पन्न करने के लिए प्रवेश करें
7
A
उत्तर
8
आपका प्रश्न बहुत विशिष्ट नहीं है। यदि आप इसे अधिक जानकारी के साथ अपडेट करते हैं, तो मैं अतिरिक्त उत्तर के साथ इस उत्तर को निकाल दूंगा।
यहां शामिल मैन्युअल चरणों का एक अवलोकन है।
- DefineDynamicModule
- के साथ एक मॉड्यूल बनाएं DefineDynamicAssembly
- साथ एक विधानसभा बनाएं DefineType साथ प्रकार बनाएं। अपना टाइप इंटरफेस बनाने के लिए
TypeAttributes.Interface
पास करना सुनिश्चित करें। - मूल इंटरफ़ेस में सदस्यों पर Iterate और नए इंटरफ़ेस में समान विधियों का निर्माण, आवश्यकतानुसार विशेषताओं को लागू करना।
- अपने इंटरफ़ेस को बनाने के लिए
TypeBuilder.CreateType
पर कॉल करें।
12
गतिशील एक अंतरफलक गुण होते हैं उस के साथ एक विधानसभा बनाने के लिए:
using System.Reflection;
using System.Reflection.Emit;
// Need the output the assembly to a specific directory
string outputdir = "F:\\tmp\\";
string fname = "Hello.World.dll";
// Define the assembly name
AssemblyName bAssemblyName = new AssemblyName();
bAssemblyName.Name = "Hello.World";
bAssemblyName.Version = new system.Version(1,2,3,4);
// Define the new assembly and module
AssemblyBuilder bAssembly = System.AppDomain.CurrentDomain.DefineDynamicAssembly(bAssemblyName, AssemblyBuilderAccess.Save, outputdir);
ModuleBuilder bModule = bAssembly.DefineDynamicModule(fname, true);
TypeBuilder tInterface = bModule.DefineType("IFoo", TypeAttributes.Interface | TypeAttributes.Public);
ConstructorInfo con = typeof(FunAttribute).GetConstructor(new Type[] { typeof(string) });
CustomAttributeBuilder cab = new CustomAttributeBuilder(con, new object[] { "Hello" });
tInterface.SetCustomAttribute(cab);
Type tInt = tInterface.CreateType();
bAssembly.Save(fname);
कि बनाता है निम्नलिखित:
namespace Hello.World
{
[Fun("Hello")]
public interface IFoo
{}
}
जोड़ना तरीकों TypeBuilder.DefineMethod फोन करके MethodBuilder वर्ग का उपयोग करें।
संबंधित मुद्दे
- 1. प्रतिबिंब का उपयोग करना। "(X) {...}" ब्लॉक का उपयोग करने के लिए प्रवेश करें?
- 2. प्रतिबिंब का उपयोग करना। एक इंटरफेस को लागू करने वाली कक्षा बनाने के लिए प्रवेश करें
- 3. क्या प्रतिबिंब का उपयोग करना संभव है। Opcodes stelem.any और ldelem.any के लिए प्रवेश करें?
- 4. सी ++ के लिए PHP इंटरफ़ेस उत्पन्न करने के लिए स्विग का उपयोग कैसे करें
- 5. "प्रतिबिंब मशीन" बनाने के लिए प्रतिबिंब का उपयोग कैसे करें
- 6. कोड उत्पन्न करने के लिए रेजर का उपयोग करें?
- 7. एक ज़िप फ़ाइल उत्पन्न करने के लिए System.IO.Packaging का उपयोग
- 8. .NET प्रतिबिंब के लिए फ्रेमवर्क। सरलीकरण स्वीकार करें?
- 9. प्रतिबिंब के माध्यम से बनाए गए प्रकार के लिए नेमस्पेस को कैसे निर्दिष्ट करें। प्रवेश करें?
- 10. ऑब्जेक्ट के प्रारंभिकरण से पहले स्थिर चर मूल्य निर्धारित करने के लिए प्रतिबिंब का उपयोग करना?
- 11. COM-interop के लिए .NET में मुझे किस संग्रह इंटरफ़ेस का उपयोग करना चाहिए?
- 12. मोडोपेट और .NET प्रतिबिंब
- 13. घर उपयोगकर्ताओं के बीच .NET फ्रेमवर्क प्रवेश?
- 14. एप्लिकेशन के दौरान सबसे अनुकूलित कोड उत्पन्न करने के लिए .NET JIT कंपाइलर को मजबूर करना
- 15. स्पष्ट इंटरफ़ेस कार्यान्वयन और प्रतिबिंब।
- 16. यह निर्धारित करने के लिए प्रतिबिंब का उपयोग करना कि किसी ऑब्जेक्ट को GUI थ्रेड
- 17. यादृच्छिक पाठ उत्पन्न करने के लिए सरणी का उपयोग
- 18. उत्पन्न इंटरफ़ेस
- 19. पासवर्ड से एन्क्रिप्शन कुंजी उत्पन्न करने के लिए MD5 का उपयोग करना?
- 20. यादृच्छिक संख्या उत्पन्न करने के लिए रैंड का उपयोग
- 21. SWIG के साथ एक क्रॉस प्लेटफ़ॉर्म इंटरफ़ेस कैसे उत्पन्न करें?
- 22. विधि वापसी प्रकार (शून्य सहित) और पैरामीटर निर्धारित करने के लिए .NET प्रतिबिंब का उपयोग कैसे करें?
- 23. नए प्रकार के ऑब्जेक्ट्स उत्पन्न करने के लिए LINQ का उपयोग कैसे करें
- 24. क्या .NET असेंबली से प्रतिबिंब अक्षम करना संभव है?
- 25. इंटरफ़ेस ओवरराइड विधियों पर प्रतिबिंब
- 26. क्या मुझे क्रॉस-प्लेटफ़ॉर्म कार्यान्वयन के लिए इंटरफ़ेस या फ़ैक्टरी (और इंटरफ़ेस) का उपयोग करना चाहिए?
- 27. एक अद्वितीय डेटाबेस आईडी उत्पन्न करने के लिए System.currentTimeMillis() का उपयोग करने के लिए सुरक्षित?
- 28. प्रतिबिंब का उपयोग करना इंटरफेस को खोजने के लिए लागू किया
- 29. .net उद्यम पुस्तकालय प्रवेश करने में एक 'श्रेणी' (ईवेंट लॉग करने के लिए)
- 30. उसी स्क्रिप्ट के भीतर निष्पादित गतिशील एक्सएसएल उत्पन्न करने के लिए एक्सएसएल का उपयोग करें?
नहीं, यह अच्छा है। मुझे प्रतिबिंब का उपयोग करने की आवश्यकता नहीं है। इससे पहले स्वीकार करें ताकि सिर्फ यह देखना चाहें कि कोई मेरी बुराई मास्टर प्लान में ठोकर खा सकता है या नहीं। –