通过COM Interop公开c#类时,是否可以使用其命名空间作为前缀?
在Visual Studio中,如果允许设置“使程序集成为COM-Visible”,则默认情况下会执行此操作,但是我不想公开整个库,我只想能够在其可见类的前面添加前缀命名空间。
这是否必须通过生成特定文件来手动完成,还是有另一种方式(例如,向类中添加属性来实现)?
答案 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
}
}