Ich versuche, eine Klasse aus einer C # -Assembly in vb.net zu verwenden. Die Klasse hat mehrdeutige Mitglieder, weil vb.net nicht zwischen Groß- und Kleinschreibung unterscheidet. Die Klasse ist etwa so:
%Vor%Ich versuche auf die enum zuzugreifen: Foo.FORMAT.ONE
Dies ist nicht möglich, weil es auch eine Eigenschaft namens 'format' gibt.
Ich kann die C # -Assembly nicht ändern. Wie kann ich das umgehen und auf das Enum von vb.net verweisen?
Ich glaube nicht, dass Sie das umgehen können. Nehmen Sie Kontakt mit dem Autor der C # -Komponente auf, die Sie verwenden möchten, und überzeugen Sie sie, ihren Code zu reparieren.
Übrigens ist dies der Hauptgrund für das Attribut CLSCompliant(true)
. Wenn Sie APIs oder anderen Code schreiben, der mit hoher Wahrscheinlichkeit von anderen Sprachen verwendet wird, sollten Sie dies immer tun. Es hätte dieses Problem für den ursprünglichen Autor markiert, um zu erkennen und korrekt zu beheben.
Es gibt ein paar Möglichkeiten, wie Sie damit umgehen können, aber keine ist wirklich eine gute Option.
Man erstellt ein C # -Projekt und wickelt die Klasse vollständig um, wobei die mehrdeutigen Elemente in eindeutige geändert werden. Je nachdem, wie groß die Klasse ist, könnte es eine Menge Arbeit sein, obwohl Sie nur die Mitglieder, die Sie brauchen, natürlich einpacken müssen.
Das andere ist die Verwendung von Reflektion, die nicht so viel Arbeit ist wie das Wrapping, aber im Vergleich zu dem Autor, der den Code erst richtig schreibt, ist es immer noch sinnlose Arbeit.
Tags und Links visual-studio vb.net