У меня есть перечисление, определенный как этотEnum to String?
enum Tile { Empty, White, Black };
Но давайте предположим, что при записи на консоли,
Console.Write(Tile.White);
Я хочу, чтобы напечатать
W
или любой другой значение, я мог бы использовать switch
для этого, но есть ли лучший способ? Возможно, используя атрибуты?
Вот что я имею в виду. Дать что-то вроде этого,
[AttributeUsage(AttributeTargets.Field)]
public class ReprAttribute : Attribute
{
public string Representation;
public ReprAttribute(string representation)
{
this.Representation = representation;
}
public override string ToString()
{
return this.Representation;
}
}
enum Tile {
[Repr(".")]
Empty,
[Repr("W")]
White,
[Repr("B")]
Black
};
// ...
Console.Write(Tile.Empty)
печати Будет
.
Конечно, что override string ToString()
не делать то, что я надеялся, что это будет делать (он по-прежнему выводит «Пустой» вместо этого.
Эта статья очень хорошо описывает ее: http://blogs.msdn.com/b/abhinaba/archive/2005/10/20/c-enum-and-overriding-tostring-on-it.aspx
Тогда, возможно, вы должны быть более конкретными в будущем, мы не можем читать мысли. –
@Arkain: И я не могу предсказать, как вы меня истолковываете. То, что ясно в твоем сознании, не всегда ясно в чьем-то. Вы когда-нибудь пробовали разговаривать с клиентом? – mpen
Вместо того, чтобы получать snide, укажите ваши требования так же ясно, как день;) Не допускайте места для интерпретации. –