Уже есть идея использовать Func для обработки этого, что мне кажется лучшим решением, я просто сделал несколько предположений относительно вашего намерения и предположил, что вы пытаетесь получить текст этой метки, поэтому я написал его как таковой.
private void YourFunction
{
Type TrType = this.GetType();
MooClass Moo = new MooClass();
LabelTypeEnum LabelType = LabelTypeEnum.something;
ShowIf(Moo, TrType, LabelType, new Object[] { Moo.Foo, Moo.Foo2, Moo.Foo3 }, a => a.Foo.DangerousNullRef + " - " + a.Foo.AnotherPossibleNullRef);
}
void ShowIf(MooClass Moo, Type t, LabelTypeEnum LabelType, IEnumerable<object> PreCheckNullsValues, Func<MooClass, string> mc )
{
if (PreCheckNullsValues.Any(a => a == null))
Show(t, LabelType, mc(Moo));
else
DontShowField(t);
}
Вот предполагаемый скелет вашего кода поддержки:
enum LabelTypeEnum
{
something
}
class MooClass
{
public FooClass Foo { get; set; }
}
class FooClass
{
public object DangerousNullRef { get; set; }
public object AnotherPossibleNullRef { get; set; }
}
private void Show(Type TrType, LabelTypeEnum LabelType, string p) { }
private void DontShowField(Type TrType) { }
Затем вы можете использовать Действие для безопасного доступа к своим свойствам.