Existe uma maneira de executar uma verificação nula encadeada em um dinâmico / expando?

C # tem utilidadeOperador Condicional Nulo. Bem explicado emesta resposta também.

Eu queria saber se é possível fazer uma verificação semelhante como esta quando meu objeto é um objeto dinâmico / expando. Deixe-me mostrar um código:

Dada essa hierarquia de classes

public class ClsLevel1
{
    public ClsLevel2 ClsLevel2 { get; set; }
    public ClsLevel1()
    {
        this.ClsLevel2 = new ClsLevel2(); // You can comment this line to test
    }        
}

public class ClsLevel2
{
    public ClsLevel3 ClsLevel3 { get; set; }
    public ClsLevel2()
    {
        this.ClsLevel3 = new ClsLevel3();
    }       
}

public class ClsLevel3
{
    // No child
    public ClsLevel3()
    {
    }
}

Se eu executar esse tipo de verificação nula encadeada, funcionará

ClsLevel1 levelRoot = new ClsLevel1();
if (levelRoot?.ClsLevel2?.ClsLevel3 != null)
{
     // will enter here if you DO NOT comment the content of the ClsLevel1 constructor
}
else
{
     // will enter here if you COMMENT the content of the ClsLevel1 
}

Agora, tentarei reproduzir esse comportamento com dinâmica (ExpandoObjects)

dynamic dinRoot = new ExpandoObject();
dynamic DinLevel1 = new ExpandoObject();
dynamic DinLevel2 = new ExpandoObject();
dynamic DinLevel3 = new ExpandoObject();

dinRoot.DinLevel1 = DinLevel1;
dinRoot.DinLevel1.DinLevel2 = DinLevel2;
//dinRoot.DinLevel1.DinLevel2.DinLevel3 = DinLevel3; // You can comment this line to test

if (dinRoot?.DinLevel1?.DinLevel2?.DinLevel3 != null)
{
     // Obviously it will raise an exception because the DinLevel3 does not exists, it is commented right now.
}

Existe uma maneira de simular esse comportamento com dinâmica? Quero dizer, procurar um nulo em uma longa cadeia de membros?

questionAnswers(2)

yourAnswerToTheQuestion