title: C# implementing interface with events
body: <p>I have and interface as shown below:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public delegate void ScriptFinished();
  
  public interface IScript
  {
      event ScriptFinished ScriptFinishedEvent;
  }
  </code></pre>
  
  <p>Now I want to implement the interface as shown below:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public class Script : IScript
  {
      event ScriptFinished ScriptFinishedEvent;
  }
  </code></pre>
  
  <p>But I get error:</p>
  
  <blockquote>
    <p>'Script.ScriptFinishedEvent' cannot implement an interface member because
    it is not public.</p>
  </blockquote>
  
  <p>Ok, I add <code>public</code> to the event:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public interface IScript
  {
      public event ScriptFinished ScriptFinishedEvent;
  }
  </code></pre>
  
  <p>But the error is:</p>
  
  <blockquote>
    <p>The modifier 'public' is not valid for this item</p>
  </blockquote>
  
  <p>What I do wrong here and how can I implement an interface with events?</p>