Ich habe eine Methode, die den Namen einer gespeicherten Prozedur und eine Microsoft.VisualBasic.Collection akzeptiert ? Ich verweise auf ein vb-Projekt, in dem ich eine Sammlung an diese Methode weitergeben muss, aber das aktuelle Projekt, in dem ich mich befinde, ist in c #, daher bin ich nicht sicher, was ich in die Methode einbringen kann?
Hier ist der Vb-Aufruf:
%Vor%In meiner c # -App muss ich dies einen Pass in dem entsprechenden c # -Objekt zu params nennen.
Eine Option besteht darin, den Typ Collection
direkt aus C # zu verwenden. Dies ist ein Standardtyp in der Assembly Microsoft.VisualBasic.dll
und kann von jeder .Net-Sprache verwendet werden.
Die nächste Sammlung in der Standard-BCL ist jedoch Hashtable
. Die Konvertierung zwischen Hashtable
und Collection
sollte ziemlich einfach sein
Zum Beispiel
%Vor% Hinweis: Dies ist jedoch keine direkte Zuordnung. Der Collection
-Typ unterstützt eine Reihe von Operationen, die Hashtable
nicht mögen: Vorher-Nachher-Werte, Index nach Zahl oder Schlüssel, etc ... Mein Ansatz wäre, einen Typ konsistent in der gesamten Anwendung zu verwenden und entweder den C # zu ändern. oder VB Projekt entsprechend
Wenn Sie die Methode nicht ändern können, so dass ICollection
, IEnumerable
oder ihre generischen Varianten verwendet werden, müssen Sie eine Instanz von Microsoft.VisualBasic.Collection
an diese Methode übergeben.
Aus der Sicht von C # ist Microsoft.VisualBasic.Collection
nur eine Klasse, und Sie können damit genauso wie mit jeder anderen Klasse arbeiten, d. h. zum Beispiel:
Natürlich müssen Sie in Ihrem Projekt auf die Assembly Microsoft.VisualBasic.dll verweisen.
Es gibt kein "C # -Objekt" oder "VisualBasic.net-Objekt" - es ist alles .net, Sie können also einfach einen Verweis auf Microsoft.VisualBasic.dll einfügen und dieses Microsoft.VisualBasic verwenden. Sammlung.
C # Entwickler werden oft wegen des Namens von Microsoft.VisualBasic.dll missbilligt, aber Sie werden nicht von Velociraptors gefressen, wenn Sie es verwenden, da .net korrekt und vollständig sprachunabhängig ist.