当前位置: 首页 > 编程语言 > C#

C#中ComVisible类的接口继承分享

时间:2023-04-10 21:14:49 C#

C#中ComVisible类的接口继承Unabletoaccessinheritedproperty(P1)fromw/cscript.类结构如下所示:[ComVisible]publicinterfaceIA{stringP1{get;}}[ComVisible]publicinterfaceIB:IA{stringP2{get;}}[ComVisible]publicabstractclassBase:IA{publicstringP1{get{return"somestring";}}}[ComVisible]publicclassConcrete:Base,IB{publicstringP2{get{return"P2somestring";}}}js文件中的客户端代码:try{varobj=newActiveXObject(“具体的”);WshShell.Popup(obj.P1);//<--显示空字符串}catch(e){WshShell.Popup(e.description);如果我将属性P1添加到接口IB,一切正常,但继承点是什么?或者我在这里做错了什么?我从COMInterop窃取了这个问题的答案:在类似问题“C#exposedtoCOM-Interfaceinheritance”中给出的基类属性没有暴露给COM链接,特别是本网站上的MVP声明:InCOMInterfacesMutualinheritance是可能的。但是,向.NET公开.NET接口的.NET实现不支持继承。因此,您必须将任何接口成员从基接口复制到派生接口……在构建公开的COM接口时,互操作代码不会查看基接口类型。它确实提出了一些解决方法,例如从两个接口继承,或实现“本机”TLB(用IDL编写接口并用MIDL编译它——visstudio中应该有这样的项目)。代码看起来不错,它应该按预期工作,除了你省略了两个属性的返回类型,它应该是:[ComVisible]publicabstractclassBase:IA{publicstringP1{get{return"somestring";}}}[ComVisible]publicclassConcrete:Base,IB{publicstringP2{get{return"P2somestring";}}}但我认为这只是您在帖子中编写的代码中的一个遗漏。以上就是C#学习教程:C#中ComVisible类中接口继承分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: