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”。是否缺少程序集引用?