2008-10-15 10 views
8

Ich versuche, eine Klasse aus einer C# -Ansammlung in vb.net zu verwenden. Die Klasse hat mehrdeutige Mitglieder, weil vb.net nicht zwischen Groß- und Kleinschreibung unterscheidet. Die Klasse ist so etwas wie diese:Mehrdeutige Klassenmitglieder in vb.net

 
public class Foo { 

    public enum FORMAT {ONE, TWO, THREE}; 

    public FORMAT Format { 
    get {...} 
    set {...} 
    } 
} 

Ich versuche, die Enum zuzugreifen: Foo.FORMAT.ONE

dies nicht möglich ist, weil es auch eine Eigenschaft ‚format‘ benannt ist.

Ich kann die C# -Baugruppe nicht ändern. Wie kann ich das umgehen und auf das Enum von vb.net verweisen?

Antwort

7

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 hinter dem Attribut CLSCompliant(true), das, wenn Sie APIs oder anderen Code schreiben, der mit hoher Wahrscheinlichkeit von anderen Sprachen verwendet wird, sollten Sie immer festlegen. Es hätte dieses Problem für den ursprünglichen Autor markiert, um zu erkennen und korrekt zu beheben.

4

Es gibt ein paar Möglichkeiten, wie Sie umgehen können, aber keiner ist wirklich eine gute Option.

Eine besteht darin, ein C# -Projekt zu erstellen und die Klasse vollständig zu umbrechen, wobei die mehrdeutigen Elemente in eindeutige geändert werden. Je nachdem, wie groß der Kurs ist, könnte es eine Menge Arbeit sein, obwohl Sie nur die Mitglieder, die Sie brauchen, natürlich einpacken müssen.

Die andere ist, Reflexion zu verwenden, die nicht so viel Arbeit wie Verpackung ist, aber immer noch sinnlose Arbeit im Vergleich zum Autor nur den Code richtig schreiben an erster Stelle.