在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;
}
}
答案 0 :(得分:0)
好的,我解决了。
container.Register<Func<Type, Object>>(() => { return (x) => container.GetInstance(x); });