Проблемы с COM-объектом C # - PullRequest
0 голосов
/ 08 июля 2010

Мне нужно настроить dll, чтобы он был COM-объектом (один основной класс в библиотеке классов).Эта DLL имеет ссылку на другие библиотеки.Когда я использую атрибуты C # для COM и регистрирую dll, я не могу работать с этим классом, регистрация регистрирует много беспорядка в реестре (несколько открытых классов в моей библиотеке классов, которые я не хочу показыватьих как ком).Это сводит меня с ума от этой проблемы, кто-нибудь знает, меняется ли com-интерфейс в C # force в ссылочных библиотеках (когда я создаю простой класс и взаимодействую, он прекрасно работает, поэтому я думаю, что он связан с ссылочными библиотеками)?Пожалуйста, помогите мне !!!

Спасибо заранее !!!

1 Ответ

1 голос
/ 08 июля 2010

используйте Attibutes в этой сборке. если вы не хотите, чтобы публичные классы были видны как COM-интерфейсы

[ComVisible(false)]

тогда есть несколько вариантов, как сделать его видимым COM один из них: сделать интерфейс с атрибутами

 [ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("new generated GUID")]
public interface ISample
{
 void DoSomthing();
}

затем реализуйте этот интерфейс

[Guid("new generated GUID")]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(ISample))]
[ProgId("YourModule.YourClass")]
[ComVisible(true)]
public class YourClass :  ISample
...