2012/10/19(Fri) 11:11:33 編集(投稿者)
Hongliang様
ご返信頂きありがとうございます。
なるほど、確かにシリアライズでget、デシリアライズでsetするはずですよね。
それできっとset/getが無いといけないんですね。
なんとなく、丸々インスタンスを放り込むイメージでいたので、
プロパティが必要という認識に至っておりませんでした。
方針自体は後者に近い形でいきたいと思います。
実際には今のところ、Colorの値をメンバに持ち、
プロパティでColor自体の値と、Red,Green,Blueの値のset/getプロパティを用意し、
set/getプロパティ内でColorを再割り当てなどしています。
当該コードは下記の通りです。
実際にこれをそのまま使用していますので、そのままコピペでも使えます。
(後でこの質問を見た方へ)
public class LooksLikeColor
{
private Color clsDrawColor = Color.White;
public LooksLikeColor() { }
[RefreshProperties(RefreshProperties.Repaint)]
public Color DrawColor
{
get { return clsDrawColor; }
set
{
clsDrawColor = value;
}
}
[RefreshProperties(RefreshProperties.Repaint)]
public int R
{
get { return clsDrawColor.R; }
set
{
if (clsDrawColor.R != value)
{
clsDrawColor = Color.FromArgb(value, clsDrawColor.G, clsDrawColor.B);
}
}
}
[RefreshProperties(RefreshProperties.Repaint)]
public int G
{
get { return clsDrawColor.G; }
set
{
if (clsDrawColor.G != value)
{
clsDrawColor = Color.FromArgb(clsDrawColor.R, value, clsDrawColor.B);
}
}
}
[RefreshProperties(RefreshProperties.Repaint)]
public byte B
{
get { return clsDrawColor.B; }
set
{
if (clsDrawColor.B != value)
{
clsDrawColor = Color.FromArgb(clsDrawColor.R, clsDrawColor.G, value);
}
}
}
}