using Autofac; using taloyhtio.idp.parser.common.domain; using System; using System.Reflection; namespace taloyhtio.idp.parser.common { public class EventsHandlerFactory { readonly ILifetimeScope _container; public EventsHandlerFactory(ILifetimeScope container) { _container = container; } public void ResolveAndRun(T env) where T : INotification { using (var scope = _container.BeginLifetimeScope()) { var instance = scope.Resolve(typeof(BaseEventHandler<>) .MakeGenericType(env.GetType()));// as BaseEventHandler<>; // IEventHandler; Type t = instance.GetType(); var m = t.GetMethod("Handle", BindingFlags.Public | BindingFlags.Instance, null, CallingConventions.Any, new Type[] { env.GetType() }, null); m.Invoke(instance, new[] { (object)env }); } } } }