2008-09-25 8 views
7

COM-görünür hale getirmeye çalıştığım aşağıdaki arabirime sahibim. Tür kitaplığı oluşturmaya çalıştığımda, uygulama sınıfımın genel bir sınıftan türediği gerçeğini beğenmiyor..NET generic sınıfıyla COM arabirimi uygulamak mümkün mü?

COM uygulama sınıfı olarak genel bir sınıf kullanmak mümkün mü? (Ben olmayan bir jenerik sarmalayıcı yazmak ve COM o dışa biliyorum, ama bu doğrusu olmadan yapardım başka bir katman ekler.)

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

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

Hata mesajı:

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.

cevap

5

Jenerik jenerik türden türeyen türler ve türler verilemez. MyClass tipinizde ComVisible(false)'u ayarlayın. Genel olmayan bir sınıf uygulaması oluşturmanız veya yalnızca arayüzü kullanmanız gerekir.