क्या यह एक COM इंटरफ़ेस को.NET generics वर्ग के साथ लागू करना संभव है?



comvisible (1)

मेरे पास निम्नलिखित इंटरफ़ेस है जो मैं COM-visible को बनाने की कोशिश कर रहा हूं। जब मैं टाइप-लाइब्रेरी बनाने की कोशिश करता हूं तो मुझे यह तथ्य पसंद नहीं है कि मेरा कार्यान्वयन क्लास सामान्य क्लास से निकला है।

क्या एक COM वर्ग के कार्यान्वयन वर्ग के रूप में एक सामान्य वर्ग का उपयोग करना संभव है? (मुझे पता है कि मैं एक गैर-सामान्य आवरण लिख सकता हूं और निर्यात कर सकता हूं कि COM, लेकिन यह एक और परत जोड़ता है जिसे मैं बिना करना चाहता हूं।)

[ComVisible(true)]
public interface IMyClass
{
   ...
}

[ComVisible(true), ComDefaultInterface(typeof(IMyClass))]
[ClassInterface(ClassInterfaceType.None)]
public class MyClass : BaseClass<IMyClass>, IMyClass
{
   ...
} 

त्रुटि संदेश:

Warning: Type library exporter encountered a type that derives 
from a generic class and is not marked as 
[ClassInterface(ClassInterfaceType.None)]. Class interfaces cannot
be exposed for such types. Consider marking the type with 
[ClassInterface(ClassInterfaceType.None)] 
and exposing an explicit interface as the default interface to 
COM using the ComDefaultInterface attribute.

जेनेरिक प्रकार और प्रकार जो सामान्य प्रकार से प्राप्त होते हैं, उन्हें निर्यात नहीं किया जा सकता। अपने MyClass प्रकार पर ComVisible(false) सेट करें आपको या तो गैर-सामान्य श्रेणी के कार्यान्वयन को बनाने या अंतरफलक का उपयोग करना होगा।