如何简化对象初始值设定项中的条件语句,以便代码更易读?如果addNew为true,则将新项添加到字典中,否则它只有一个项。
...
var channel = new ChannelConf {
Name = "Abc"
Headers = !addNew ? new Dictionary<string, string>
{
[Constants.Key1] = Id
}
: new Dictionary<string, string>
{
[Constants.Key1] = Id,
[Constants.Key2] = Port
}
}
...
答案 0 :(得分:1)
您可以调用方法初始化Headers
:
...
new ChannelConf {
Name = "Abc"
Headers = GetNewDictionary(addNew)
}
...
private Dictionary<string, string> GetNewDictionary(bool addNew)
{
Dictionary<string, string> output = new Dictionary<string, string> { [Constants.Key1] = Id };
if (addNew) { output.Add(Constants.Key2, Port); }
return output;
}
或者,您可以保持原样并减少行数:
...
var channel = new ChannelConf {
Name = "Abc"
Headers = !addNew ? new Dictionary<string, string> { [Constants.Key1] = Id }
: new Dictionary<string, string> { [Constants.Key1] = Id, [Constants.Key2] = Port }
}
...
答案 1 :(得分:0)
我认为通过参数化构造函数完成任务是一种很好的做法。它可能是其他人消费的常见API,因此您可以轻松记录,而不必告诉消费者应该如何使用api。
public ChannelConf(bool addNew)
{
Headers = !addNew
? new Dictionary<string, string>
{ [Constants.Key1] = Id }
: new Dictionary<string, string>
{
[Constants.Key1] = Id,
[Constants.Key2] = Port
};
}