私はライブラリの設計を構築していますが、C# に慣れていないため、構造体 (値の型) を作成して内部で管理したいと考えていました。つまり、誰かが上記の構造に値を割り当てると、(この例では) 値の長さを検証し、値のサニテーションを行います (つまり、 ,etc. に変わりwhitespace
ますunderscores
)。
それは、私が見落としている値を制御することです。通常のクラスの場合、割り当てにイベントを添付してすべての検証を実行するだけですが、作成するオブジェクトの目的に対してクラスが過剰になるため、struct
オブジェクトが最適であると考えました.
構造設計、おそらくきれいではありませんが、これまでのところ:
public struct ST_Keytip
{
private string _value;
[DefaultProperty]
public string FooBar
{
get { return this._value; }
set
{
if (len(value) < 1 or len(value) > 3)
{
throw new exception("blah blah blah....PUKE!!!!")
}
else
{
this._value = value;
}
}
}
}
クリーンな C# 設計ではないと確信していますが、それがクラス オブジェクトであった場合に私が行ったであろうことです。基本的に、インスタンス化する必要はなく(したがって、クラスを使用しなかった理由)、値を保持する必要があります。値の検証を構造体にアタッチできるかどうかを知りたいのですが、できる場合はどうすればよいですか? そうでない場合、割り当てられる値に制限がある値型を持つための最良のアプローチは何でしょうか?