2011-11-16 9 views
0

J'ai besoin d'exposer une interface COM avec une méthode qui implémente un paramètre de tableau de taille fixe. La taille du tableau est fixe car le consommateur est basé sur une technologie dans laquelle vous devez déclarer la taille du tableau. donc que je pouvais faire quelque chose comme çaInterface Com avec tableau de taille fixe

[Guid("2AE7C342-89ED-492B-B9AA-92A778332000")] 
public interface _DocSolutionsClassic 

{ 
    [DispId(1)] 
    void Execute(string[] InputParams); 
} 

et il fonctionne pour moi, mais il y a une erreur de dimension différente par le consommateur.

Je voudrais écrire quelque chose lik ce

[DispId(1)] 
void Execute(string[50] InputParams); 

ou cette

[DispId(1)] 
string[] InputParams = new string[50]; 
void Execute(string[] InputParams); 

Mais VStudio 2010 me donner une erreur ...

+0

La 'chaîne' n'est pas vraiment un type qui devrait être utilisé comme paramètre dans la méthode COM. Vous devriez aller avec BSTR, ou similaire. –

Répondre

1

Peut-être que cela pourrait aider:

Extrait de code IDL:

[id(1), helpstring("method foobar")] HRESULT foobar(BSTR * bstrs, ULONG size); 

De cette façon, vous pouvez envoyer n'importe quel nombre de chaînes. Le paramètre 'size' est en fait le nombre de chaînes vers lesquelles pointe 'bstrs'.

Remarque: Utilisez SysAllocString()/SysFreeString() pour l'allocation/désallocation de chaînes (ou un équivalent dans votre environnement).