Cómo verificar la intersección de los períodos DateTime [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Algoritmo para detectar períodos superpuestos [duplicado] 12 respuestas

Tengo cuatro objetos DateTime. A1, A2 y B1, B2.

Necesito saber que el período A1-A2 no se cruza con el período B1-B2. Pero no quiero escribir código sucio, como muchos bloques if.

if (A1 < B1 && A2 > B1)
{
    return false;
}

.... etc.

EDITADO

Intenté usar este: Rangos de comparación

DateTime A1 = DateTime.MinValue.AddMinutes(61);
DateTime A2 = DateTime.MinValue.AddHours(1.2);
DateTime B1 = DateTime.MinValue.AddMinutes(5);
DateTime B2 = DateTime.MinValue.AddHours(1);

Console.WriteLine(Range.Overlap(
    new Range<DateTime>(A1, A2),
    new Range<DateTime>(B1, B2)
));

Regresóciert pero esperabafals. Porque este código siempre devuelve verdadero

 if (left.Start.CompareTo(left.Start) == 0)
 {
     return true;
 }

Respuestas a la pregunta(11)

Su respuesta a la pregunta