Search code examples
c#dependency-injectionunity-containersimple-injector

Simple injector equivalent of Unity Func<T,TResult> registration


In Unity, line below solves my problem.

container.RegisterType<Func<Type, Object>>(new InjectionFactory(x => new Func<Type, Object>((y) => x.Resolve(y))));

Can I achieve this with Simple Injector?

Or maybe there's some better way to register my factory?

public class QueryFactory : IQueryFactory
{
    private readonly Func<Type, object> _resolveCallback;

    public QueryFactory(Func<Type, object> resolveCallback)
    {
        _resolveCallback = resolveCallback;
    }

    public T ResolveQuery<T>()
        where T : class, IQuery
    {
        return _resolveCallback(typeof(T)) as T;
    }
}

Solution

  • Ok, I solved it.

    container.Register<Func<Type, Object>>(() => { return (x) => container.GetInstance(x); });