COM Interop中的.NET属性?

Jas*_*son 5 .net com interop

是不是您不能使用COM Interop公开COM属性?一切都必须是一种方法吗?

如果不是这样,你怎么做?

Che*_*eso 10

不对.

我理解你的问题是要求COM调用或使用.NET类.

根据此页面,您可以向COM使用者公开托管类的方法,属性和字段.

要向COM公开的所有托管类型,方法,属性,字段和事件都必须是公共的.类型必须具有公共默认构造函数,这是唯一可以通过COM调用的构造函数.

这对你有用吗?:

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("A1209192-723B-4325-8599-FB39D9F202D9")]
public interface ITicklee
{
    [DispId(1)]
    void TickleMe();

    [DispId(2)]
    int Count{get;}
}


[Guid("45715A3B-CA95-49f7-9889-A0022B31EF8A")]
public class Elmo : ITicklee
{
    // default ctor
    public Elmo () {}

    private int _tickleCount;

    public int Count
    {
        get
        {
            return _tickleCount;
        }
    }

    public void TickleMe()
    {
        _tickleCount++;
    }
}
Run Code Online (Sandbox Code Playgroud)

VBScript测试客户端可能如下所示:

Sub TestTickle()  

    WScript.echo("")

    WScript.echo("Instantiating an Elmo ...")
    dim elmo
    set elmo = WScript.CreateObject("Ionic.Tests.Com.Elmo")

    WScript.echo("Tickling...")

    For i = 1 to 5
      elmo.TickleMe()
    Next  

    WScript.echo("")
    c = elmo.Count

    WScript.echo("Tickle Count = " & c)

    ' one for the road'
    elmo.TickleMe()

End Sub

call TestTickle()     ' ahem '
Run Code Online (Sandbox Code Playgroud)