我正在查看一些代码并发现了这种模式:
private string text { get; set; }
public string Text
{
get
{
return text;
}
set
{
text= value;
RaisePropertyChanged("Text");
}
}
我通常只使用私有字段支持我的公共属性。
有没有理由应该像这样的私有财产支持一个属性?我的直觉是说它不应该,而且应该由一个字段支持,是吗?我可以用什么技术原因支持这个?
答案 0 :(得分:1)
典型情况是,当您拥有原始数据(没有任何转换的数据)和相同数据时,但友好代表:
private String m_RawText;
// Text as it's obtained from, say, database
private string rawText {
get {
if (null == m_RawText)
m_RawText = ReadValueFromDataBase();
return m_RawText;
}
set {
if (m_RawText != value) {
UpdateValueInDataBase(value);
m_RawText = value;
}
}
}
// Friendly encoded text, for say UI
public string Text {
get {
return EncondeText(rawTex);
}
set {
rawText = DecodeText(value);
RaisePropertyChanged("Text");
}
}
// Here we want rawText
public void PerformSomething() {
String text = rawText; // we want raw text...
...
}
// And here we prefer Text
public override String ToString() {
return String.Fromat("Text = {0} ", Text, ...)
}