我对c#很新。想在我的POCO中有默认值。 Path2应该依赖于Path1或分别扩展它。
public class Config
{
public string Path1 { get; set; }
public string Path2 { get; set; }
...
}
public Config()
{ Path1 = "testpath";
Path2 = path1 + "bla";
...}
如果用户现在更改了UI中的Path1,我希望Path2也相应地更改。
Config testconfig = new Config();
testconfig.Path1 = "changed";
但Path2停留在“testpath bla”而不是“change bla”。
我想我错过了一些必不可少的东西。 有人可以把我踢向正确的方向吗?
此致
答案 0 :(得分:2)
如果Path2
的第二部分是常数,那么你可以使用它:
public string Path2
{
get { return string.Format("{0}{1}", Path1, "bla"); }
}
而不是将Path2
设为自动属性。
修改强>:
根据评论,也许这就是你想要的
public class Config
{
private string path1;
private string path2;
public string Path1
{
get { return path1;}
set
{
path1 = value;
Path2 = string.Format("{0}bla", value);
}
}
public string Path2
{
get { return path2; }
set { path2 = value; }
}
public Config()
{
Path1 = "testpath";
}
}
这会在设置Path1
时随时同步Path2
和Path1
,但也可以Path2
设置为完全独立
答案 1 :(得分:1)
字符串不起作用。当你追加它时,你正在创建一个单独的新字符串(我内部意思),所以你的更改不会'传播'。
要为固定值解决此问题,您可以使用Flat Eric's answer.
在阅读了有关“默认值”的评论并仍然可以进行更改后,我会提出类似的建议
private string _path2 = null;
public string Path1 {get;set;}
public string Path2
{
get {
if (String.IsNullOrEmpty(_path2))
{
return Path1 + "bla"; //Or your default value
}
else
{
return _path2;
}
}
set
{
_path2 = value;
}
}