Что было бы лучшим способом обернуть перечисление - PullRequest
1 голос
/ 19 августа 2010

У меня есть enum, которым я не хочу делиться между слоями.

Так что я думал, что завернуть его было бы здорово.

Но как? Есть много пунктов, ручная запись всех элементов не является решением. Также генерируется enum.

Я бы хотел сохранить интеллект.

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Ну, вы можете привести к / от int (или к определенному базовому типу, который по умолчанию равен int), но это хрупко; он не защищает вас, когда кто-то удаляет запись, в результате чего его нумеруют, или изменяет значение 7 с Blah.TrivialDetail на Blah.CriticalFail.

Если вы хотите intellisense, всем сторонам нужно будет знать что-то о числах, так что IMO вы также можете поделиться перечислением с помощью некоторой общей сборки.

0 голосов
/ 19 августа 2010

Ну, один из способов (не такой элегантный) состоит в создании другого перечисления в сборке, которым можно поделиться. Вам нужно создать какое-то действие сборки, чтобы клонировать сгенерированное перечисление из сборки данных в новое разделяемое перечисление. Если сгенерированный enum находится в отдельном файле, то простое копирование файла (с изменением в пространстве имен) в качестве события после сборки для проекта DAL или события Pre-Build в проекте с общей сборкой сделают свое дело. Если сгенерированный файл содержит какие-то другие вещи, вам нужно выполнить некоторую обработку текста на вашем любимом языке (powershell, c #), чтобы извлечь определение перечисления.

...