我需要在我的项目中找到所有实现了名为IMyInterface的接口并已注册到Unity容器中的类。
有没有一种方法可以做到这一点,而不必让Unity创建已注册到Unity的对象的实例?
有没有一种方法可以做到这一点,而不必让Unity创建已注册到Unity的对象的实例?
您可以使用类似这样的查询进行容器实例的注册
var x = container.Registrations.Where(cm => cm.RegisteredType == typeof(IMyInterface));
你可以先查询所有不是抽象的类型并实现你的接口:
this.GetType().Assembly.GetTypes().Where(type => type.IsClass &&
!type.IsAbstract &&
type.IsAssignableFrom(IMyInterface));
然后对于这些类型中的每一个,查询您的Unity容器以查看它是否包含其实例。