2009-05-15 2 views

Antwort

1

Ich würde BSTR nicht für Nicht-String-Verwendung verwenden - es kann Sie eine Nanosekunde sparen, aber wird schließlich Probleme geben, wenn und wenn Sie Ihren Code erweitern oder portieren müssen. Ich würde nur einen SAFEARRAY der Varianten mit den Schlüsseln bei Index 0, 2, 4 ... und die entsprechenden Werte bei 1, 3, 5, ... verwenden

2

Sie können eine Schnittstelle für einen Schlüssel-Wert einführen Paar und ein anderes für die Sammlung solcher Paare.

0

Sie müssen "am besten" definieren. COM ist - trotz der besten Wünsche seiner Designer - eine sehr heterogene Plattform. Die Art des Clients (oder welche Sprache?), Die Sie erwarten, wird mit dem Objekt interagieren, sollte Ihre Wahl stark beeinflussen.

Nur zwei kurze Beispiele:

  • von Klassierung ASP aufgerufen wird?
    Ihre einzigen Werkzeuge sind VARIANTEN. Ok - Sie benutzen ATL: Ihre einzigen Werkzeuge sind entweder BSTRs oder SAFEARRAYS von VARIANTEN.

  • Aus C++ aufgerufen werden?
    Sie können ein benutzerdefiniertes Datenfeld verwenden (lesen Sie unter [size_is]). Oder, wenn möglich, sogar Arrays mit fester Größe. Es ist TONS einfacher auf beiden Seiten.

Es gibt noch andere Überlegungen:

Schreibst du den Client? Dann wollen Sie die Dinge auf beiden Seiten erleichtern.

Schreiben Sie nur das Objekt? Dann möchten Sie wahrscheinlich Dinge am einfachsten machen auf dem Client, auch wenn es am härtesten auf dem Server ist (warum? Weil Sie die andere Partei gerne mit Ihnen arbeiten, vor allem in einer Beratung oder kommerziellen Umfeld - don schau nicht faul!).

Ist dies auch ein einmaliges Objekt? Oder wird es in einer Reihe von Umständen in der Zukunft verwendet werden? Im ersten Fall könnten Sie feststellen, dass es wirklich keine Rolle spielt. In letzterem wollen Sie es gründlich denken.

Wenn Sie weitere Details zu Ihren Umständen veröffentlichen, können wir Ihnen wahrscheinlich genauere Anweisungen geben.

0

Betrachten Sie IPersistPropertyBag für den Standard Weg, dies zu tun.

Betrachten Sie ein OLE-Eigenschaft Set-Objekt.

Übernehmen Sie die Annahme Scripting.Dictionary Objekt oder ADODB.Record, wenn Sie etwas schnell und schmutzig erstellen.