C# Unity容器-动态地将T传递给Resolve方法
我已经创建了一个我键入的ISearchable接口,这样我就可以为结果检索T的IEnumerable 我有很多服务可以为不同的域对象实现ISearchableC# 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();
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,不过我希望有一个强类型的解决方案——如果有的话!)