Propriedades .NET em interoperabilidade?

votos
4

É verdade que você não pode usar COM Interop para expor propriedades COM? Tudo tem que ser um método?

Se isso não é verdade, como você faz isso?

Publicado 19/05/2009 em 17:06
fonte usuário
Em outras línguas...                            


3 respostas

votos
9

Não é verdade.

Eu entendo a sua pergunta para ser perguntando sobre vocação COM ou usando uma classe .NET .

De acordo com esta página , você pode expor métodos, propriedades e campos de classes gerenciadas aos consumidores COM.

Todos gerenciados tipos, métodos, propriedades, campos e eventos que você deseja expor para COM devem ser públicos. Tipos devem ter um construtor público padrão, que é o único construtor que pode ser invocado através de COM.

Faz este trabalho para você ?:

[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++;
    }
}

Um cliente de teste VBScript pode ter esta aparência:

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 '
Respondeu 19/05/2009 em 18:20
fonte usuário

votos
1

Se você quer dizer que você não pode expor propriedades com objeto para um aplicativo .NET usando interoperabilidade, eo objeto COM foi criado em VB, então você está correto. VB utiliza deixar a propriedade para os tipos nativos e propriedade definida para tipos de objetos. Se você tentar definir uma propriedade de seu objeto COM a partir da aplicação .NET, ele tenta usar SET. Se a propriedade subjacente é um tipo VB nativa, esta falha.

Como tanto quanto sei, a única solução além de usar métodos em vez de propriedades é manipular manualmente o IDL.

Respondeu 22/05/2009 em 20:18
fonte usuário

votos
-3

Comentário: afaik você pode usar as propriedades somente leitura apenas

Respondeu 27/09/2014 em 16:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more