C#:acceder a Enum desde otra clase

C#:acceder a Enum desde otra clase

Puede declarar una enumeración fuera de una clase:

namespace MyNamespace
{
    public enum MyEnum
    {
        Entry1,
        Entry2,
    }
}

Y luego puedes agregar using MyNamespace; donde debe usarse.


La respuesta de Aaron es muy buena, pero creo que hay una forma mucho mejor de hacerlo:

public static class class1
{
    public void Run()
    {
        class2.Mode mode = class2.Mode.Selected;

        if (mode == class2.Mode.Selected)
        {
            // Do something crazy here...
        }
    }
}

public static class class2
{
    public enum Mode
    { 
        Selected, 
        New
    } 
}

No tiene sentido complicar esto. Es una tarea sencilla.

Todo lo mejor

Chris.


Sí:

class2.Mode = class2.Mode.Selected

Pero tenga en cuenta que no puede tener definido un tipo anidado que tenga el mismo nombre que uno de los miembros de la clase externa, por lo que este código no se compilará. La enumeración o la propiedad deberán tener otro nombre. El nombre de su clase y el nombre de la variable también entran en conflicto, lo que hace que esto sea un poco más complejo.

Para que esta sea una respuesta más genérica, si tiene esto:

public class Foo
{
    public SomeEnum SomeProperty { get; set; }

    public enum SomeEnum {
        Hello, World
    }
}

Entonces este código asignará un valor de enumeración a la propiedad:

Foo foo = new Foo();
foo.SomeProperty = Foo.SomeEnum.Hello;