private Func<IEnumerable, object> ResolveConstructor()
{
Func<IEnumerable, object> ctor;
if (!ConstructorsCache.TryGetValue(Type, out ctor))
{
var param = Expression.Parameter(typeof(IEnumerable), "events");
// ReSharper disable once AssignNullToNotNullAttribute
var constructorCall = Expression.New(typeof(EventBatch<>).MakeGenericType(Type).GetConstructor(new[] { typeof(IEnumerable) }), param);
var constructorLambda = Expression.Lambda(constructorCall, param);
ctor = (Func<IEnumerable, object>)constructorLambda.Compile();
ConstructorsCache[Type] = ctor;
}
return ctor;
}