我正在尝试注册几种ISetting
与 Windsor 容器共享相同接口的类型。
澄清:ISetting
接口不需要任何实现。它的唯一目的是帮助定位程序集中的设置类型。否则,这些设置类型不会以任何方式、形状或形式相互关联。
通常,我会使用以下代码逐个创建这些类型:
var settingsManager = new SettingsManager();
var applicationSettings = settingsManager.LoadSettings<ApplicationSettings>();
var emailSettings = settingsManager.LoadSettings<EmailSettings>();
但是我想按照约定注册这些组件,所以我不必手动进行。
到目前为止,我在 WindsorInstallers 之一中有以下代码:
container.Register( Classes.FromAssemblyContaining<ISetting>()
.BasedOn<ISetting>()
...help...
);
澄清:设置将在类中用作具体类型(见下文)
public class Service2
{
private readonly EmailSettings _settings;
public Service2(EmailSettings settings)
{
_settings = settings;
}
public void Awesome()
{
Console.WriteLine(_settings.Value);
}
}
我的目标:尽管我可以将所有设置类型一个一个地注入容器中,但我正在寻找一种解决方案,我可以在其中找到并注册从ISetting
使用一个(可能是两个)语句继承的所有类型。