Как и предполагали другие, вы можете использовать либо методы расширения, либо шаблон Decorator.
Однако учтите, что Color имеет достаточное количество свойств и методов, поэтому перенаправление их всех из класса декоратора в упакованную структуру Color будет означать написание большого количества шаблонов. Однако, если вы пойдете по этому пути, вы действительно можете определить операторы и даже неявные преобразования из вашего класса в Color и наоборот (чтобы вы могли использовать их более взаимозаменяемо), например:
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);
}
}
для проверки:
MyColor c = System.Drawing.Color.AliceBlue; // assigning a Color to a MyColor
// thanks to the implicit conversion
Console.WriteLine(c.ToString()); // writes "Color [AliceBlue]"