Mam enum zdefiniowane następującoEnum to String?
enum Tile { Empty, White, Black };
Ale załóżmy, gdy zapisywane na konsoli
Console.Write(Tile.White);
chcę go wydrukować
W
lub jakikolwiek inny wartość, mógłbym użyć do tego celu switch
, ale czy jest tam ładniejszy sposób? Być może używając atrybutów?
Oto, co mam na myśli. Pisząc coś takiego,
[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)
wydrukuje
.
oczywiście, że override string ToString()
nie robić to, co ja ufałem to zrobić (to nadal wyprowadza "Empty" zamiast.
Ten artykuł podsumowuje to całkiem dobrze: http://blogs.msdn.com/b/abhinaba/archive/2005/10/20/c-enum-and-overriding-tostring-on-it.aspx
Może więc powinieneś być bardziej konkretny w przyszłości, nie możemy czytać w myślach. –
@Arkain: I nie mogę przewidzieć, jak również mnie zinterpretujesz. To, co jest jasne w twoim umyśle, nie zawsze jest jasne w czyjejś osobie. Czy próbowałeś kiedyś rozmawiać z klientem? – mpen
Zamiast szyderstwa, określ swoje wymagania tak jasno, jak dzień;) Nie rób miejsca na interpretację. –