Переименование / Префиксирование классов для COM Interop - PullRequest
0 голосов
/ 11 октября 2018

Есть ли способ добавить префикс класса ac # к его пространству имен при представлении его через COM Interop?

В Visual Studio, если вы разрешите параметр «Сделать сборку COM-Visible», он сделает это по умолчанию, ноЯ не хочу раскрывать всю библиотеку, я просто хочу иметь возможность добавлять несколько видимых классов к их пространству имен.

Нужно ли это делать вручную, генерируя определенные файлы, или есть другой способ, например, добавить атрибут в класс для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Вы говорите о ProgId класса, предоставляемого COM Interop?

Если вы добавите атрибут ComVisible к классу, он будет иметь имя класса с указанием пространства имен в качестве ProgId по умолчанию:

namespace MyCompany.MyNamespace
{
    [ComVisible(true)]
    public class MyComVisibleClass
    {
        // ProgId will be MyCompany.MyNamespace.MyComVisibleClass

        ... Implementation

    }
}

Но вы можете добавить ProgIdAttribute, чтобы указать что угодно для ProgId:

namespace MyCompany.MyNamespace
{
    [ComVisible(true)]
    [ProgId("Anything.I.Like")]
    public class MyComVisibleClass
    {
        // ProgId will be Anything.I.Like

        ... Implementation

    }
}
0 голосов
/ 11 октября 2018

Вы можете изменить модификатор доступа класса на внутренний, а не на публичный.Таким образом, будут показаны только те, которые являются публичными.

...