Это мой код:
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?