c# – StructureMap获取注册的类型,而不是实例

我有一个插件系统,允许用户选择他们想要创建的插件的类型(基本上这设置一个插件实例的配置).

他们从选择列表中选择插件类型.我使用StructureMap将IEnumerable注入到我的MVC控制器中,以便我可以访问FQ类型名称以在选择列表中使用.

这样做不错,但我并不喜欢这样做,我必须创建一个所有注册插件的实例,只是在选择列表中显示它们的列表.

所以问题是,我可以访问使用StructureMap注册的IPlugin类型吗?

解决方法

您应该可以使用容器的Model属性获取实例信息:
IContainer container = ObjectFactory.Container;
IEnumerable<InstanceRef> instances = container.Model.AllInstances.
  Where(i => i.PluginType.Equals(typeof(IPlugin)));

您可以访问混凝土类型:

foreach(var instanceRef in instances)
  Console.WriteLine(instanceRef.ConcreteType);

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...