Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity容器-动态地将T传递给Resolve方法_C#_Inversion Of Control_Unity Container_Ioc Container - Fatal编程技术网

C# Unity容器-动态地将T传递给Resolve方法

C# Unity容器-动态地将T传递给Resolve方法,c#,inversion-of-control,unity-container,ioc-container,C#,Inversion Of Control,Unity Container,Ioc Container,我已经创建了一个我键入的ISearchable接口,这样我就可以为结果检索T的IEnumerable 我有很多服务可以为不同的域对象实现ISearchable Container.RegisterType<ISearchable<Animal>, AnimalService>(); Container.RegisterType<ISearchable<Fish>, FishService>(); Container.RegisterType();

我已经创建了一个我键入的ISearchable接口,这样我就可以为结果检索T的IEnumerable

我有很多服务可以为不同的域对象实现ISearchable

Container.RegisterType<ISearchable<Animal>, AnimalService>();
Container.RegisterType<ISearchable<Fish>, FishService>();
Container.RegisterType();
Container.RegisterType();
我想(通过统一)解决一个基于类型的ISearchable,但我正在努力让它工作

下面的内容没有编译,但希望能给我一个想法,我正在努力实现

Type t = typeof(Animal);
var searchProvider = _container.Resolve<ISearchable<t>>();
Type t=typeof(动物);
var searchProvider=_container.Resolve();
感谢您的帮助

谢谢

安迪

var sp = container.Resolve(
Type.GetType("ISearchable`1[" + yourGenericTypeHere + "]"));

为什么不按名称注册类型并以这种方式解析

Container.RegisterType<ITelescopeView, TelescopeView>("type1");
Container.RegisterType<ITelescopeView, TelescopeView2>("type2");

Container.Resolve(ITelescopeView, "type1");
Container.RegisterType(“type1”);
容器注册类型(“类型2”);
Container.Resolve(ITelescopeView,“类型1”);

如果你想要你的名字,你可以简单地用这个类型的全名,也可以用其他的名字。德米特里的方法也会奏效。但这可能会产生更清晰的代码。

最终对其进行了排序,希望它能对其他人有所帮助

var type = filter.GetType();
var genericType = typeof(ISearchable<>).MakeGenericType(type);
var searchProvider = _unityContainer.Resolve(genericType);
var type=filter.GetType();
var genericType=typeof(ISearchable)。MakeGenericType(type);
var searchProvider=\u unityContainer.Resolve(genericType);

谢谢你的Dmitri,不过我希望有一个强类型的解决方案——如果有的话!)