我目前有一个界面
public interface IHandle<T> where T : ICommand
{
void Invoke(T command);
}
在结构映射中,我可以通过以下类型的调用获得 IHandle 的任何特定实现,因此我知道我的所有处理程序都存在于 StructureMap 中。
var commandHandler = ObjectFactory.GetInstance<IHandle<SomeCommand>>();
但是,如果 IHandle,我想做的是获取(或作为我的最终目标弹出)所有实例。
我尝试了以下但没有成功
// compile error because it doesn't have a type
ObjectFactory.GetAllInstances<IHandle<>>();
// returns 0 items
ObjectFactory.GetAllInstances<IHandle<ICommand>>();
// has runtime error of "Cannot create arrays of open type."
ObjectFactory.GetAllInstances(typeof(IHandle<>));
有谁知道如何获取通用接口的所有实例?
谢谢你的帮助