Như những người khác đề nghị, bạn có thể đi một trong hai phương pháp khuyến nông bằng cách này hay mô hình cách trang trí. Tuy nhiên, hãy xem xét rằng Màu sắc có số lượng và các phương thức và các phương thức hợp lý, do đó chuyển hướng tất cả chúng từ lớp trang trí đến cấu trúc Màu được bao bọc của bạn sẽ có nghĩa là viết nhiều bản mẫu. Nếu bạn đi con đường đó, tuy nhiên, bạn có thể thực sự xác định khai thác và chuyển đổi thậm chí tiềm ẩn từ lớp học của bạn là Color và ngược lại (vì vậy mà bạn có thể sử dụng chúng thay thế cho nhau nhiều hơn), như thế này:
public class MyColor {
public System.Drawing.Color val;
public MyColor(System.Drawing.Color color)
{
this.val = color;
}
public static MyColor AliceBlue
{
get {
return new MyColor(System.Drawing.Color.AliceBlue);
}
}
public override string ToString()
{
return val.ToString();
}
// .... and so on....
// User-defined conversion from MyColor to Color
public static implicit operator System.Drawing.Color(MyColor c)
{
return c.val;
}
// User-defined conversion from Color to MyColor
public static implicit operator MyColor(System.Drawing.Color c)
{
return new MyColor(c);
}
}
để kiểm tra :
MyColor c = System.Drawing.Color.AliceBlue; // assigning a Color to a MyColor
// thanks to the implicit conversion
Console.WriteLine(c.ToString()); // writes "Color [AliceBlue]"
Nguồn
2011-08-17 15:33:40
Tôi không chắc chắn nếu điều này có thể được thực hiện nhưng tôi rất tò mò về kết quả của 'đỏ - xanh' sẽ là gì? – n8wrl
@ n8wrl: Thật kỳ lạ, nhưng tôi mong đợi một '-' để loại bỏ bất kỳ giá trị RGB có màu nào khác. – Yuck
@ n8wrl bất kể đối diện của màu tím là gì, có lẽ :-) –