Как можно переопределить перечисление в C #?

Это мой код:

void Main()
{
    StarTrek baseClass = new StarTrek();
    NewGeneration childClass = new NewGeneration();

    baseClass.ShowEnum();
    childClass.ShowEnum();
}

public class StarTrek
{
    internal enum Characters
    {
        Kirk, Spock, Sulu, Scott
    }

    public void ShowEnum()
    {
        Type reflectedEnum = typeof(Characters);
        IEnumerable<string> members = reflectedEnum.GetFields()
                                            .ToList()
                                            .Where(item => item.IsSpecialName == false)
                                            .Select(item => item.Name);
        string.Join(", ", members).Dump();
    }
}

public class NewGeneration : StarTrek
{
    internal new enum Characters
    {
        Picard, Riker, Worf, Geordi
    }       
}

ShowEnum всегда отображает:

Кирк, Спок, Сулу, Скотт

, даже если он был вызван в классе NewGeneration. Я что-то упускаю / неправильно понимаю? Есть ли способ для ShowEnum использовать NewGeneration.Characters вместо StarTrek.Characters?

5
задан acermate433s 18 October 2011 в 13:44
поделиться