C# 公开.NET类函数而不包装它们
我有一个C# 公开.NET类函数而不包装它们,c#,.net,com,comvisible,C#,.net,Com,Comvisible,我有一个COMVisible类MyAPI,我的客户端将使用它作为所有API访问的根对象 我的API位于另一个程序集OtherAPI中,该程序集具有文档和窗口API类(不可见COM) 我想通过MyAPI类将文档和窗口类公开给一个后期绑定的客户端,比如JavaScript [COMVisible(true)] class MyAPI { public OtherAPI::Document NewDocument() { return new OtherAPI::Doc
COMVisible
类MyAPI,我的客户端将使用它作为所有API访问的根对象
我的API位于另一个程序集OtherAPI中,该程序集具有文档和窗口API类(不可见COM)
我想通过MyAPI类将文档和窗口类公开给一个后期绑定的客户端,比如JavaScript
[COMVisible(true)]
class MyAPI
{
public OtherAPI::Document NewDocument()
{
return new OtherAPI::Document();
}
}
// Something like this should work in the client code
(new MyAPI()).NewDocument().GetName();
问题是它看不到GetName,因为我认为那不是COM可见的
我可以在这个类中包装Document和Window类中的每个函数,但我正在寻找一个优雅的解决方案。我希望我的客户端应用程序能够通过MyAPI对象同时使用文档和窗口类函数。您需要阅读文档
为您带来观看乐趣而突出显示的重要部分:)
将特定类型上的属性设置为false将隐藏该类型,并且
其成员。但是,如果
类型是不可见的。将类型的属性设置为false可防止
将该类型导出到类型库;班级不是
注册的;接口从不响应非托管
查询接口呼叫
然而强>
除非将类及其成员显式设置为false,否则继承
类可以公开给COM基类成员,这些成员在
原始类。例如,如果您将ClassA设置为false,但不执行此操作
将属性应用于其成员,则类及其成员
对COM不可见。但是,如果您从ClassA派生ClassB并导出
ClassB对于COM,ClassA成员成为的可见基类成员
B类
所以它读得很清楚
如果已将父类成员标记为false,则不能公开它们,但是,如果只有父类被标记为false(且该成员未显式标记为false),则可以公开它们
否则,您将不得不重新实现它们。。。对不起,今天这里没有免费的午餐因为某种原因,它们不可见