Tôi đã có một enum định nghĩa như thế nàyEnum to String?
enum Tile { Empty, White, Black };
Nhưng chúng ta hãy giả sử khi ghi vào giao diện điều khiển,
Console.Write(Tile.White);
Tôi muốn nó in
W
Hoặc bất kỳ khác giá trị, tôi có thể sử dụng một số switch
cho điều này, nhưng có cách nào đẹp hơn không? Có lẽ sử dụng các thuộc tính?
Đây là những gì tôi có trong đầu. Viết một cái gì đó như thế này,
[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)
Sẽ in
.
Tất nhiên, đó override string ToString()
không làm những gì tôi đã hy vọng nó sẽ làm gì (nó vẫn kết quả đầu ra "Empty" để thay thế.
Bài viết này tóm tắt nó khá tốt: http://blogs.msdn.com/b/abhinaba/archive/2005/10/20/c-enum-and-overriding-tostring-on-it.aspx
Sau đó, có thể bạn nên cụ thể hơn trong tương lai, chúng tôi không thể đọc được suy nghĩ. –
@Arkain: Và tôi không thể dự đoán bạn sẽ giải thích cho tôi như thế nào. Điều rõ ràng trong tâm trí bạn không phải lúc nào cũng rõ ràng trong người khác. Bạn đã từng nói chuyện với khách hàng chưa? – mpen
Thay vì bắt snide, hãy nêu rõ các yêu cầu của bạn rõ ràng như ban ngày;) Không có chỗ để giải thích. –