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的重命名/前缀类的主要内容,如果未能解决你的问题,请参考以下文章

vs2013 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”。是否缺少程序集引用?

XML 属性未获取命名空间前缀

工具收集 - 重命名工具 ReNamer

有没有办法关闭代码片段中的命名建议?

[答疑精选]EA生成代码变量命名不要m前缀,采用首字母小写咋设置(2016/3/26)

PHP命名规则