我在使用 StructureMap 的 .NET 应用程序中包含了一些功能切换。我想注册功能切换有两个目的。
- 在诊断页面上显示所有 的当前状态。
IFeatures
- 在依赖给定
IFeature
实现的服务的构造函数中使用某些实例
这是我的设置。我想知道的是,我这样做对吗?有没有更好的方法可以做到这一点?
class HotNewFeature : IFeature { ... }
class ServiceThatUsesFeature
{
public ServiceThatUsesFeature(HotNewFeature hotNewFeature) { ... }
}
// Type registry setup
For<HotNewFeature>().Singleton().Use<HotNewFeature>();
For<IFeature>().Singleton().Add(c => c.GetInstance<HotNewFeature>);
For<ServiceThatUsesFeature>().Singleton().Use<ServiceThatUsesFeature>());
// Get all instances on the diagnostics page:
IEnumerable<IFeature> features = ServiceLocator.Current.GetAllInstances<IFeature>();
我希望在诊断页面上,features
在这种情况下会包含一个IEnumerable
带有单个元素的实例,即HotNewFeature
.