C # Каков наилучший способ создать перечисление, которое используется несколькими классами?

13
задан Benjamin 27 December 2013 в 22:55
поделиться

7 ответов

  1. Исправленный перечисления в Вашем пространстве имен (или делают новое пространство имен для них) или
  2. Вставленным в них (статичный?) класс где-нибудь, если это имеет больше смысла.

я сохранил бы их в их собственном файле для легкого доступа и хорошей организации так или иначе.

я обычно не помещал бы их в класс, если они так или иначе не "принадлежат" там. Как Вы имеют Автомобильный класс с перечислением для типов автомобиля, и Дорожный класс и класс Моста, который может установить пределы для типов автомобиля. Car.CarType, кажется, логическая организация по этому...

8
ответ дан lc. 27 December 2013 в 22:55
поделиться

Обычно я просто бросаю их в пространство имен. Это - то, что Microsoft делала записи платформа.NET, таким образом, это - то, что я делаю также для непротиворечивости, которую Вы понимаете :)

13
ответ дан Sekhat 27 December 2013 в 22:55
поделиться

Поместите его в его собственный файл и просто объявите его:

общедоступное перечисление Foo {a, b, c, d}

Рассматривают Ваше пространство имен, конечно.

8
ответ дан DarkwingDuck 27 December 2013 в 22:55
поделиться

Мой совет не состоит в том, чтобы использовать Перечисления вообще. Используйте одиночные элементы вместо этого.

Как

    public class A : ISomeInterface
    {
        public static readonly A Instance = new A();
        private A()
        {
        }

    }

    public class B : ISomeInterface
    {
        public static readonly B Instance = new A();
        private B()
        {
        }
    }

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

С наилучшими пожеланиями

Matze

-9
ответ дан Matze 27 December 2013 в 22:55
поделиться

Можно поместить перечисление, новый codefile с .cs расширением, чтобы intellisense работал, удостоверяются его часть проекта/решения, и конечно это должно быть общедоступное перечисление так, чтобы у Вас был объем решения для него. Если intellisense является проблемой, удостоверьтесь, что Вы создаете свое решение однажды, у меня была эта проблема однажды и просто восстанавливание, решенное это. Пространство имен является хорошим вариантом, если Вы хотите организовать свой код правильно, и Вы кодируете крупный проект. Платформа.NET была большой. таким образом, это имеет перечисления под пространствами имен только для лучшего понимания и организации кода.

1
ответ дан Sumit Ghosh 27 December 2013 в 22:55
поделиться

Вот пример наличия двух перечислений в различных пространствах имен:

using TotallyDifferentNameSpace.Enums;

namespace EnumEx
{
    class Program
    {
        static void Main(string[] args)
        {
            CarType car = CarType.Audi;
            PetrolType pType = PetrolType.Diesel;
        }
    }

    public enum CarType
    {
        Volkswagen,
        Audi,
        Toyota,
        Ford,
        Porsche,
        Lada
    }
}

namespace TotallyDifferentNameSpace.Enums
{
    public enum PetrolType
    {
        Gasoline,
        Diesel
    }
}
3
ответ дан atsjoo 27 December 2013 в 22:55
поделиться

Справка XML-комментариев, особенно если другие будут использовать его

 /// <summary>
/// Defines the types of cars we support
/// </summary>
public enum CarType
{
    /// <summary>
    /// VW - the peoples car
    /// </summary>
    Volkswagen,

Ваше перечислимое имя, должна быть множественным числом (как проинструктировано FxCop)

public enum CarTypes

, Добавляют числовые значения и используют поразрядно нумерацию, даже если Вы не планируете использовать поразрядно (это - боль для изменения нумерации позже).

    Volkswagen = 1,

    /// <summary>
    /// They own lambo... can't be all that bad
    /// </summary>
    Audi = 2,

    /// <summary>
    /// Good, cheap, reliable
    /// </summary>
    Toyota = 4,
7
ответ дан Robert MacLean 27 December 2013 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: