Разоблачение перечисления из класса библиотеки - PullRequest
2 голосов
/ 22 октября 2008

В C # я использую библиотеку, которая определяет перечисление. Я хотел бы позволить потребителям моего кода (в другой сборке) передавать значение перечисления в качестве параметра одной из моих функций без необходимости ссылаться на основную библиотеку.

Есть ли способ для меня, чтобы выставить перечисление библиотеки моим потребителям?

Ответы [ 3 ]

8 голосов
/ 22 октября 2008

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

3 голосов
/ 22 октября 2008

Вы можете предложить перегрузку, которая принимает int, описывает, какие значения являются действительными, а затем выполняет приведение самостоятельно. Кроме того, вы можете предложить другое перечисление в вашей библиотеке, а затем преобразовать его перед вызовом во вторую библиотеку.

1 голос
/ 22 октября 2008

Я действительно не знаю, какая рациональная причина делает это (комбинация «метод вызова потребителя из типа в моей сборке» и «потребитель не использует мою сборку в качестве ссылки»), но есть 2 способа. 1001 *

Первый (рекомендуется): Вы должны разделить вашу сборку на две части. Один с определением типа enum, а второй с функциями. Потребители будут ссылаться только на «первую» сборку.

Второй (не рекомендуется): Вы можете использовать (sbyte / (u) short / (u) int / (u) long в параметрах вместо перечислений.

Но я думаю, у вас несоответствующий дизайн объектной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...