¿Cómo saber si una línea cruza un polígono en C #?

Tengo una pregunta muy similar a esta:

¿Cómo saber si una línea cruza un plano en C #?

Estoy buscando un método (en C #) que diga si una línea está intersecando un polígono arbitrario.

creo que elalgoritmo de Chris Marasti-Georg fue muy útil, pero le falta el método más importante, es decir, la intersección de línea a línea.

¿Alguien sabe de un método de intersección de línea para completar el código de Chris Marasti-Georg o tiene algo similar?

¿Hay un código incorporado para esto en C #?

Este método es para usar con el algoritmo Bing Maps mejorado con una función de área prohibida. La ruta resultante no debe pasar por el área prohibida (el polígono arbitrario).