En Unity, ¿cómo Unity llama mágicamente a todas las "Interfaces"?

La unidad tiene una "interfaz":

IPointerDownHandler (doco)

Simplemente implementaOnPointerDown ...

public class Whoa:MonoBehaviour,IPointerDownHandler
    {
    public void OnPointerDown (PointerEventData data)
        { Debug.Log("whoa!"); }
    }

y la Unidad llamará "mágicamente" alOnPointerDown en cualquiera de tales MonoBehavior.

NO tiene que registrarlos, establecer un evento ni hacer nada más..

Todo lo que hace sintácticamente es agregar "IPointerDownHandler" y "public Void OnPointerDown" a una clase, y puede obtener esos mensajes mágicamente.

(Si no eres un desarrollador de Unity, ¡incluso funciona si de repente agregas uno en el Editor mientras el juego se está ejecutando!)

¿Cómo demonios hacen eso y cómo puedo hacerlo?

Entonces, quiero hacer esto:

public interface IGetNews
 {
 void SomeNews(string s);
 }

y luego puedo agregarSomeNews a cualquier monocomportamiento.

Las soluciones alternativas son obvias, quiero saber específicamente cómo Unity logra ese comportamiento "mágico".

(Por cierto: siento que no deberían haber llamado a estas "interfaces", ya que, básicamente, esnada como una interfaz, ¡es todo lo contrario! Supongo que se podría decir que mágicamente hicieron una forma de heredar de más de una clase abstracta).

Aparte:

Si no has usado Unity antes, la forma convencional de hacerlo, ya que no tenemos acceso a la magia de Unity, es simplemente agregar UnityEvent a tu demonio que enviará el mensaje en cuestión:

public class BlahDaemon:MonoBehaviour
  {
  public UnityEvent onBlah;

    ...
    onBlah.Invoke();

Digamos que tiene clases Aaa, Bbb, Ccc que desean recibir el mensaje. Simplemente conecte el evento Unity (ya sea arrastrando el editor o el código), por ejemplo:

public class Aaa:MonoBehaviour
  {
  void Awake()
    {
    BlahDaemon b = Object.FindObjectOfType<BlahDaemon>();
    b.onBlah.AddListener(OnBlah);
    }

  public void OnBlah()
    {
    Debug.Log("almost as good as Unity's");
    }
  }

Básicamente estás "registrando" tu llamadaAwake, de hecho estás aprovechando el uso mágico de Unity, sea lo que sea. Pero quiero usar la magia directamente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta