¿Hay alguna manera de realizar una verificación nula encadenada en un dinámico / expando?

C # tiene la utilidadOperador condicional nulo. Bien explicado enesta respuesta también.

Me preguntaba si es posible hacer una verificación similar como esta cuando mi objeto es un objeto dinámico / expando. Déjame mostrarte un código:

Dada esta jerarquía de clases

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()
    {
    }
}

Si realizo este tipo de verificación nula encadenada, funciona

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 
}

Ahora, intentaré reproducir este comportamiento con 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.
}

¿Hay alguna manera de simular este comportamiento con la dinámica? Quiero decir, ¿busca un nulo en una larga cadena de miembros?

Respuestas a la pregunta(2)

Su respuesta a la pregunta