简单的注入器相当于Unity Func <t,tresult>注册

时间:2015-07-02 14:26:01

标签: c# dependency-injection unity-container simple-injector

在Unity中,下面的一行解决了我的问题。

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

我可以使用Simple Injector实现这一目标吗?

或许有更好的方式来注册我的工厂?

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;
    }
}

1 个答案:

答案 0 :(得分:0)

好的,我解决了。

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