У меня есть объект Address, который имеет свойства AddressLine1, AddressLine2, Suburb, State, ZipCode. (их больше, но для примера этого достаточно). Также каждое из этих свойств является строками. И я использую C # 3.0.
Я хочу представить его в виде строки, но, делая это, я обнаружил, что создаю метод с высокой цикломатической сложностью из-за всех операторов if ...
Предполагая, что строка, назначенная каждому свойству, совпадает с именем свойства (то есть AddressLine1 = "AddressLine1") ... Я хочу, чтобы адрес был представлен следующим образом:
"Адрес Line1 Адрес AddressLine2 ZipCode в пригороде".
Теперь, оригинальный способ, которым я это сделал, был простым String.Format ()
String.Format("{0} {1} {2} {3} {4}", address.AddressLine1,
address.AddressLine2, address.Suburb, address.State, address.ZipCode);
Это все хорошо, пока я не обнаружил, что некоторые из этих полей могут быть пустыми ... в частности AddressLine2. В результате появляются дополнительные ненужные пробелы ... которые особенно раздражают, когда вы получаете несколько строк подряд.
Чтобы обойти эту проблему и единственное решение, которое я могу придумать, мне пришлось создавать строку вручную и добавлять свойства адреса в строку только в том случае, если они не нулевые или не пустые.
е
string addressAsString = String.Empty;
if (!String.IsNullOrEmpty(address.AddressLine1))
{
addressAsString += String.Format("{0}", address.AddressLine1);
}
if(!String.IsNullOrEmpty(address.AddressLine2))
{
addressAsString += String.Format(" {0}", address.AddressLine2);
}
etc....
Есть ли более элегантный и / или лаконичный способ добиться этого, о котором я не думаю? Мое решение просто кажется грязным и раздутым ... но я не могу придумать лучшего способа сделать это ...
Насколько я знаю, это мой единственный вариант, учитывая то, что я хочу сделать ... но я просто подумал, что брошу это туда, чтобы посмотреть, знает ли кто-то с большим опытом, чем я, лучший способ. Если нет лучшего варианта, ну да ладно ... но если есть, то я научусь чему-то, чего не знал раньше.
Заранее спасибо!