COM Interop的重命名/前缀类

时间:2018-10-11 20:26:00

标签: c# visual-studio com com-interop

通过COM Interop公开c#类时,是否可以使用其命名空间作为前缀?

在Visual Studio中,如果允许设置“使程序集成为COM-Visible”,则默认情况下会执行此操作,但是我不想公开整个库,我只想能够在其可见类的前面添加前缀命名空间。

这是否必须通过生成特定文件来手动完成,还是有另一种方式(例如,向类中添加属性来实现)?

2 个答案:

答案 0 :(得分:0)

您可以将类的访问修饰符更改为内部访问修饰符,而不是公共访问修饰符。这样,只有公开的那些才会被暴露。

答案 1 :(得分:0)

您是在谈论由COM Interop公开的类的ProgId吗?

如果将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

    }
}