C # herencia de eventos

Tengo este programa:

    class One
    {
        public delegate void del(object o);
        public event del SomethingChanged;

        int x;
        public int X
        {
            get { return x; }
            set { x = value; OnSomethingChanged(this); }
        }

        protected void OnSomethingChanged(object o)
        {
            if (SomethingChanged != null)
                SomethingChanged(o);
        }
    }

    class Two: One
    {
        public void ChangeSomething()
        {
            //if (SomethingChanged != null)
            //    SomethingChanged(this);
            OnSomethingChanged(this);
        }
    }

    static void Main(string[] args)
    {
        One one = new One();
        Console.WriteLine(one.X);
        one.SomethingChanged += new One.del(one_SomethingChanged);
        one.X = 5;
    }

    static void one_SomethingChanged(object o)
    {
        Console.WriteLine(((One)o).X);
    }

Hay 2 clases: una y dos, dos es descendiente de una. Hay un evento declarado en la clase Uno (SomethingChanged) y es activado por la clase Uno y la clase Dos. Pero eche un vistazo a Two.ChangeSomething: provoca un evento al invocar el método de la clase base. Sin embargo, si trato de invocar un evento usando un código sin procesar como

if (SomethingChanged != null)
    SomethingChanged(this);

Recibo un error del compilador que dice

The event 'One.SomethingChanged' can only appear on the left hand side of += or -= (except when used from within the type 'eventstest.Program.One')

Así que tengo curiosidad por qué no puedo usar el código 'sin procesar' en la clase dos para generar un evento, pero cuando invoco un evento de función correspondiente, ¿se genera?

[EDITAR] Encontramos algunas aclaraciones aquí: C #: Cómo generar un evento heredado

Respuestas a la pregunta(4)

Su respuesta a la pregunta