title: Dynamic Dispatch in .Net Standard 1.4
body: <p>I've used dynamic dispatch in .Net to do things like eventsourcing in the past. You can see the approach in for e.g. <a href="http://thinkbeforecoding.com/post/2009/11/02/Event-Sourcing-and-CQRS-Lets-use-it" rel="nofollow noreferrer">this article from 2009</a></p>
  
  <p>In short, you have a base Event type</p>
  
  <pre><code>public class Event {}
  </code></pre>
  
  <p>and specific Events</p>
  
  <pre><code>public class QuestionAsked : Event {}
  public class QuestionAnswered : Event {}
  </code></pre>
  
  <p>Some other class can just take an enumerable of <code>Event</code> to apply them</p>
  
  <pre><code>// snip
  
  public void Apply(IEnumerable&lt;Event&gt; events) =&gt; events.ToList().ForEach(Apply);
  
  public void Apply(Event ev) =&gt; ((dynamic) this).Apply((dynamic) ev);
  
  private void Apply(QuestionAnswered qa) {
   //something
  }
  // end snip
  </code></pre>
  
  <p>This class doesn't need to have an <code>Apply</code> method for each type. It just ignores any events it doesn't care about.</p>
  
  <p>I've just tried to do the same thing using .NetStandard 1.4 and if I try to apply a type for which there isn't a private <code>Apply</code> method I get a <code>StackOverflowException</code></p>
  
  <p>Has dynamic dispatch changed between .Net 4.5.x and .Net (Core|Standard)? Can I no longer use this method?</p>