こんなクラスがあります。
public abstract class HtmlObject<T>
{
public HtmlObject() {}
public HtmlObject(string id, string name, T value)
{
this.ID = id;
this.Name = name;
this.Value = value;
}
public string ID { get; set; }
public string Name { get; set; }
public T Value { get; set; }
public abstract string Build();
}
このような具体的な実装を使用します。
public class HtmlRadio : HtmlObject<string>
{
private const string RadioHtml = "<input type='radio' name='{0}' value='{1}' {2} />{1}<br />";
public bool Checked { get; set; }
public override string Build()
{
if (this.Checked)
return string.Format(HtmlRadio.RadioHtml, this.Name, this.Value, "checked='checked'");
else
return string.Format(HtmlRadio.RadioHtml, this.Name, this.Value, string.Empty);
}
}
そして、私が知りたいのは、呼び出しがBuild()
スレッド間で行われた場合に安全かどうかです。私の仮定は、次の一連の呼び出しを行う場合、そうではないということです
HtmlRadio radio = new HtmlRadio();
radio.Checked = false;
//Something could happen here?
string result = radio.Build();
私の理解では、 の値は、radio.Checked
設定されてから への呼び出しの間で変化する可能性がありますがBuild()
、これは正しいですか? もしそうなら、どうすればこれを「修正」できますか?