2008-10-15 10 views
8

Próbuję użyć klasy z zestawu C# w vb.net. Klasa ma niejednoznacznych członków, ponieważ vb.net nie rozróżnia wielkości liter. Klasa jest coś takiego:Niejednoznaczni członkowie klasy w vb.net

 
public class Foo { 

    public enum FORMAT {ONE, TWO, THREE}; 

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

próbuję uzyskać dostęp do wyliczenia: Foo.FORMAT.ONE

To nie jest możliwe, ponieważ nie jest też właściwość o nazwie „format”.

Nie mogę zmienić zestawu C#. Jak mogę obejść to i odwołać się do enum z vb.net?

Odpowiedz

7

Nie sądzę, że można to obejść. Skontaktuj się z autorem komponentu C#, którego próbujesz użyć i przekonaj ich, aby naprawili swój kod.

Nawiasem mówiąc, jest to główny powód atrybutu CLSCompliant(true), który, jeśli piszesz API lub inny kod, który ma duże prawdopodobieństwo, że jest używany przez inne języki, zawsze powinieneś ustawić. Oznaczałoby to problem, aby autor oryginału wiedział o tym i naprawiał go poprawnie.

4

Istnieje kilka sposobów obejścia tego problemu, ale żadna z nich nie jest dobrym rozwiązaniem.

Jedną z nich jest utworzenie projektu C# i całkowite zawinięcie klasy, zmieniając niejednoznacznych członków na jednoznaczne. W zależności od tego, jak duża jest ta klasa, może to być dużo pracy, ale oczywiście musisz tylko owinąć członków, których potrzebujesz.

Drugim jest użycie refleksji, która nie jest tak dużą pracą jak zawijanie, ale wciąż jest bezsensowną pracą w porównaniu do autora, który po prostu poprawnie napisał kod.