Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace DynamicPlayground
- {
- class Program
- {
- /// <summary>
- /// When this is private it fails with:
- /// An unhandled exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll
- /// Additional information: 'DynamicPlayground.BaseHandler' does not contain a definition for 'When'
- /// </summary>
- private class TestHandler : BaseHandler
- {
- public bool Handled { get; private set; }
- public void When(TestEvent ev)
- {
- Handled = true;
- }
- }
- static void Main(string[] args)
- {
- var ev = new TestEvent();
- var sut = new TestHandler();
- sut.Handle(ev);
- Console.WriteLine("Handled: " + sut.Handled);
- Console.ReadKey();
- }
- }
- public abstract class BaseHandler
- {
- public void Handle(DomainEvent ev)
- {
- dynamic dynamicThis = (dynamic)this;
- dynamicThis.When((dynamic)ev);
- }
- }
- public class TestEvent : DomainEvent { }
- public abstract class DomainEvent { }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement