2008-10-15 5 views
8

Я пытаюсь использовать класс из сборки C# в vb.net. Класс имеет неоднозначные члены, потому что vb.net нечувствителен к регистру. Класс-то вроде этого:Неоднозначные члены класса в vb.net

 
public class Foo { 

    public enum FORMAT {ONE, TWO, THREE}; 

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

Я пытаюсь получить доступ к перечисление: Foo.FORMAT.ONE

Это не возможно, потому что есть также свойство с именем «формат».

Я не могу изменить сборку C#. Как я могу обойти это и ссылаться на перечисление с vb.net?

ответ

7

Я не думаю, что вы можете обойти это. Свяжитесь с автором компонента C#, который вы пытаетесь использовать, и убедите их исправить свой код.

Кстати, это основная причина, лежащая в основе атрибута CLSCompliant(true), который, если вы пишете API или другой код, который имеет высокую вероятность использования другими языками, вы всегда должны устанавливать. Это могло бы помешать этой проблеме, чтобы исходный автор знал и исправлял это правильно.

4

Есть несколько способов, которыми вы можете обойти это, но ни один из них не является действительно хорошим вариантом.

Первый - создать проект C# и полностью обернуть класс, изменив неоднозначные элементы на однозначные. В зависимости от того, насколько большой класс, это может быть очень много работы, хотя вам нужно только обернуть членов, которые вам нужны, очевидно.

Другое - использовать отражение, которое не так сильно работает, как обертывание, но по-прежнему бессмысленна работа по сравнению с тем, что автор правильно пишет код в первую очередь.

Смежные вопросы