COM Interop的重命名/前缀类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了COM Interop的重命名/前缀类相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

另一答案

你是在谈论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

    }
}

以上是关于COM Interop的重命名/前缀类的主要内容,如果未能解决你的问题,请参考以下文章