繁体   English   中英

如何使属性对 .NET DLL 中的 COM 可见(方法确实有效)

[英]How to make properties visible to COM in a .NET DLL (Methods DO work)

已解决,看评论!

我有一个用 c# 编写的简单 .NET DLL。

在 asp-classic 或 VB.NET 中,我可以创建对象并调用 DLL 中的成员函数,没有任何问题。 但是,这是我的绊脚石,我无法访问类属性。

这是示例代码:

[Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
    ClassInterface(ClassInterfaceType.None),
    ComSourceInterfaces(typeof(IComEvents))]
public class Com : IComInterface
{
    public string MyProperty{ get; set; }   // <-- NOT ACCESSIBLE
    public void MyFunction()                // <-- ACCESSIBLE
    {
    }
}

这是服务器端脚本:

Set com = Server.CreateObject("ns.Com")    // WORKS
com.MyProperty = "abc"                    // GIVES ERROR
com.MyFunction                            // WORKS

我收到以下错误消息:

Microsoft VBScript 运行时错误“800a01b6”

对象不支持此属性或方法:MyProperty

谁能告诉我,为什么我可以调用函数“MyFunciton”,但是如果我想设置属性值,我会收到上面的错误?

属性必须包含在接口定义中,以使它们对 COM 可见。

例子:

[Guid("... some GUID ...")]
[ComVisible(true)]
public interface MyClassInterface
{
    string MyProperty { get; set; }
    bool MyMethod();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM