有没有办法在通过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
}
}