c# - 在编译时不知道类型的情况下使用 Windsor 解析泛型接口(interface)?

标签 c# .net reflection castle-windsor

有了 Windsor,我可以做到这一点:

var validators = container.ResolveAll<IEntityValidator<Product>>();

但我不知道编译时的类型。我需要更像这样的代码:

var type = obj.GetType();
var validators = container.ResolveAll<IEntityValidator<...type...>>();

显然,上面的代码不是正确的解决方案。我猜需要一些反射魔法。如果温莎有可能的话。是吗?

最佳答案

这可能不是很完整,但它可能接近您想要做的事情:

var typeParam = obj.GetType();
var type = typeof(IEntityValidator<>).MakeGenericType(typeParam);
container.Resolve(type);

关于c# - 在编译时不知道类型的情况下使用 Windsor 解析泛型接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745015/

相关文章:

c# - 将 LINQ 查询转换为字符串,发送到远程服务器以使用 Roslyn 解析为表达式?

c# - 在 foreach 循环中编辑字典值

java方法返回类型

java - 验证错误 - 仅在某些 Android 设备上

c# - 如何在Unity3D中使用C#事件

c# - 反序列化错误 : The XML element 'name' from namespace '' is already present in the current scope

c# - Azure webjob访问第三方api无法建立信任关系

c# - 当 T 不同时,是否可以获取 List<T> 的项目数?

c# - 开放实例委托(delegate)上的协变实例类型

c# - Type.GetInterfaces() 仅用于声明的接口(interface)