Herança de evento C #

Tenho 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);
    }

Há duas classes - uma e duas, duas são descendentes de uma. Há um evento declarado na classe Um (SomethingChanged) e é acionado pela classe Um e pela classe Dois. Mas dê uma olhada no Two.ChangeSomething - ele gera evento invocando o método da classe base. No entanto, se eu tentar invocar um evento usando código bruto como

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

Estou recebendo erro do compilador dizendo

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

ntão, estou curioso para saber por que não posso usar o código 'bruto' na classe Dois para gerar evento, mas quando invoco um evento de função correspondente é gerad

[EDIT] Encontrei alguns esclarecimentos aqui: C #: gerando um evento herdado

questionAnswers(4)

yourAnswerToTheQuestion