COM Interop的重命名/前缀类

问题描述 投票:0回答:2

有没有办法在通过COM Interop公开它时为c#类添加其命名空间?

在Visual Studio中,如果您允许设置'Make assembly COM-Visible',它将默认执行此操作但我不想公开整个库,我只是希望能够为其命名空间添加几个可见类。

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

c# visual-studio com com-interop
2个回答
0
投票

您可以将类的访问修饰符更改为internal,而不是public。这样只会公开那些公开的。


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

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.