C # - ¿Propiedades internas "legibles" en quickwatch pero sin usar reflejo?

Veo que la ventana "Quick Watch" tiene acceso a todas las propiedades, independientemente de las restricciones de acceso (internas, protegidas, privadas) de una clase en una biblioteca, incluso cuando se hace referencia a la biblioteca en una aplicación, lib y espacio de nombres totalmente diferentes. Mientras que no estoy encontrando una manera de acceder a estos utilizando "reflexión". Estoy especialmente tratando de "leer" (nota - solo leer) la propiedad interna de un ensamblado. Si esto no es posible mediante el diseño de cómo funciona "interno" (no accesible fuera del mismo espacio de nombres), ¿cómo es que se "lee" en la ventana "Vista rápida" en VS.NET

Aquí está el código de ejemplo que utilicé:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestLib
{
    public class TestInteralProp
    {
        internal string PropertyInternal
        {
            get { return "Internal Property!";  }
        }

        protected string PropertyProtected
        {
            get { return "Protected Property!"; }
        }

        string PropertyPrivate
        {
            get { return "Private Property!"; }
        }

        public string PropertyPublic
        {
            get { return "Public Property!";  }
        }

        protected internal string PropertyProtectedInternal
        {
            get { return "Protected Internal Property!"; }
        }
    }
}

Cuando creo un objeto para la clase TestInernalProp, puedo ver las 4 propiedades en quickwatch -

Y cuando uso la reflexión para acceder a cualquiera de estos, excepto a la propiedad pública (PropertyPublic), obtengo una excepción de referencia nula.

//this works
propTestObj.GetType().InvokeMember("PropertyPublic", System.Reflection.BindingFlags.GetProperty, null, propTestObj, null);
//this fails (obviously)
propTestObj.GetType().InvokeMember("PropertyInternal", System.Reflection.BindingFlags.GetProperty, null, propTestObj, null);

//this works
propTestObj.GetType().GetProperty("PropertyPublic").GetValue(propTestObj, null);
//this fails again
propTestObj.GetType().GetProperty("PropertyInternal").GetValue(propTestObj, null)

No tengo claro cómo "Quick Watch" puede obtener acceso a ellos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta