using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using webapi.Domain.SeedWork; using Autofac; using System.Reflection; namespace webapi.Domain.Events { 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); // mInfo = typeof(Program).GetMethod("MethodA", //BindingFlags.Public | BindingFlags.Instance, //null, //CallingConventions.Any, //new Type[] { typeof(int[]) }, //null);); m.Invoke(instance, new[] { (object)env }); //instance.(env); //return instance1 as IEventHandler; // scope.Resolve>(); } } //public IEventHandler GetHandler(T evt) where T : INotification where TResult: Entity //{ // return _container.Resolve>(); //} } }