В моем коде я имею доступа к значениям, призывающих несколько методов получения свойств:Аналоговый аналоговый оператор в .NET 3.5/4.0, VS 2012/2013?
IFoo1 a = objA.Prop1.Value;
IFoo2 b = objB.Prop2.Prop3.Value;
IFoo3 c = objC.Prop4.Prop5.Prop6.Value;
Каждое свойство может быть пустым. Таким образом, чтобы получить доступ к каждому значение, я должен использовать вложенные если-блоки:
IFoo2 b = null;
if(objB.Prop2!=null)
{
if(objB.Prop2.Prop3!=null)
{
b = objB.Prop2.Prop3.Value;
}
}
Как я могу улучшить этот код, чтобы уменьшить количество if-блоков? Могу ли я использовать любые лямбда-выражения, LINQ, IExpression и т. Д., Чтобы каким-то образом заменить его на:
IFoo2 b = GetVal (objB.Prop2.Prop3.Value);
Все PropX имеют разные типы, и у меня есть сотни таких свойств. Я должен использовать .NET 3.5 или хотя бы .NET 4.0. Я не могу использовать более поздние версии.
ВАЖНО EDIT:
Я должен также использовать Visual Studio 2012 и 2013. Я не могу предназначаться VS 2015.
См. Здесь Студенческий класс: http://weblogs.asp.net/sreejukg/the-null-conditional-operator, у меня такая же проблема. –
Какую версию VS вы используете? Если это VS2015, вы можете использовать оператор с нулевым условием C# 6, даже если таргетинг на .NET 3.5 или 4.0 –