Come altri hanno suggerito, si può andare sia il modo in cui i metodi di estensione o il modo modello Decorator.
Tuttavia, considera che Color ha un discreto numero di proprietà e metodi, quindi ridirigli tutti dalla classe decoratore alla struttura Color avvolta significherà scrivere un numero elevato di piastre. Se seguire questa strada, tuttavia, è possibile infatti definire gli operatori e le conversioni anche implicite dalla classe al colore e viceversa (in modo da poterli utilizzare più intercambiabile), in questo modo:
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);
}
}
per testare :
fonte
2011-08-17 15:33:40
Non sono sicuro se questo può essere fatto ma sono molto curioso di sapere quale sarebbe il risultato del "rosso-blu"? – n8wrl
@ n8wrl: Stranamente, ma mi aspetterei che ''' rimuova i valori RGB che il colore ha dall'altro. – Yuck
@ n8wrl, a prescindere dal colore viola, presumibilmente :-) –