在不知道编译时的类型的情况下解析Windsor的通用接口?

All*_*est 3 .net c# reflection castle-windsor

有了温莎,我可以这样做:

var validators = container.ResolveAll<IEntityValidator<Product>>();
Run Code Online (Sandbox Code Playgroud)

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

var type = obj.GetType();
var validators = container.ResolveAll<IEntityValidator<...type...>>();
Run Code Online (Sandbox Code Playgroud)

显然,上面的代码并不接近正确的解决方案.我猜测需要一些完美的魔法.如果与温莎完全一致的话.是吗?

Gar*_*thD 8

这可能不完全,但它可能接近你想要做的事情:

var typeParam = obj.GetType();
var type = typeof(IEntityValidator<>).MakeGenericType(typeParam);
container.Resolve(type);
Run Code Online (Sandbox Code Playgroud)