在我的应用程序中,我有IPolicy
接口和一些具体的实现。让我们说BasicPolicy
和AdvancedPolicy
。我通过添加命名实例来配置 StructureMap 容器,如下所示:
class MyRegistry : Registry
{
public MyRegistry()
{
For<IPolicy>().Use<BasicPolicy>().Named("Basic policy");
For<IPolicy>().Use<AdvancedPolicy().Named("Advanced policy");
}
}
我还有一个按名称检索策略的工厂:
class PolicyFactory : IPolicyFactory
{
private readonly IContainer _container;
public PolicyFactory(IContainer continer)
{
_container = container;
}
public IPolicy GetPolicy(string name)
{
return _container.GetInstance<IPolicy>(name);
}
}
现在我想在工厂中拥有一个返回所有名称列表的方法。这样当我调用变量时将var names = _factory.GetPolicyNames()
保持.names
{ "Basic policy", "Advanced policy" }
有了这个,我可以将列表传递到表示层以将其显示在组合框中,用户可以在其中选择要应用的策略。然后,调用链将返回_factory.GetPolicy(name);
我在 StructureMap 中找不到它。如果可能,你会怎么做?如果没有,最好的解决方法是什么?