2015-07-16 4 views
0

Есть ли способ использовать/получить доступ к перечислению, содержащемуся в проекте уровня доступа к данным, без ссылки на фактический проект (чтобы попытаться сохранить отдельные вещи отдельно)?Доступ к перечислению на уровне доступа к данным

Например, у меня есть один проект: UI, который ссылается на проект: MIDDLEMAN и еще один проект говорят DAL. Если у моего UI есть ссылка на MIDDLEMAN, который, в свою очередь, имеет ссылку на DAL, где содержится перечисление, могу ли я получить доступ к перечислению с UI?

+0

Просьба дать более подробную информацию. Если вам нужно указать фактическое перечисление в вашем DAL, как вы ожидаете, что это будет работать без ссылки на объявляющий проект? –

+0

вы можете создать отдельный проект «интерфейса», который содержит только общие части. –

+0

@jonSkeet отредактировал –

ответ

1

Вы в основном есть два варианта:

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

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

+0

Я полагаю, мне было интересно, если вы можете каким-то образом перенести фактическое перечисление через средний проект, но похоже, что это невозможно –

-1

вы можете переместить перечисление в отдельном проекте и добавить к обеим проектам вы не хотите совместить :)

+0

Я хотел бы, чтобы перечисление содержалось в проекте DAL действительно –

+0

@ sam.gregory91, тогда вы должны разоблачить DAL для пользовательского интерфейса. Ваш выбор ... –

+0

возможно вы можете использовать этот ответ: http://stackoverflow.com/questions/3065526/how-to-get-an-enum-value-from-an-assembly-using-late-binding- in-c-sharp – Chaka

4

Если я работаю по программе Многозвенного слоя, я обычно создаю название проекта «Datatypes» которые хранят данные об общем доступе через любой проект другого уровня.

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