Unity容器 - 动态传递给Resolve方法

And*_*rke 7 c# ioc-container inversion-of-control unity-container

我创建了一个我输入的ISearchable接口,以便我可以检索结果的IEnumerable.

我有许多服务为不同的域对象实现ISearchable ...

Container.RegisterType<ISearchable<Animal>, AnimalService>();
Container.RegisterType<ISearchable<Fish>, FishService>();
Run Code Online (Sandbox Code Playgroud)

我想根据类型解决(通过Unity)一个ISearchable,但我正努力让它工作......

以下dos不能编译,但希望能够了解我正在努力实现的目标.

Type t = typeof(Animal);
var searchProvider = _container.Resolve<ISearchable<t>>();
Run Code Online (Sandbox Code Playgroud)

任何帮助感激地收到!

谢谢,

安迪

And*_*rke 12

最后整理了它,希望它对别人有帮助!

var type = filter.GetType();
var genericType = typeof(ISearchable<>).MakeGenericType(type);
var searchProvider = _unityContainer.Resolve(genericType);
Run Code Online (Sandbox Code Playgroud)