2

ISettingWindsor コンテナーと同じインターフェースを共有するいくつかのタイプを登録しようとしています。

明確化:ISettingインターフェイスは実装を必要としません。唯一の目的は、アセンブリ内で設定タイプを見つけるのを助けることです。それ以外の場合、これらの設定タイプは、形や形で互いに関連していません。

通常、次の行に沿ったコードを使用して、これらの型を 1 つずつ作成します。

var settingsManager = new SettingsManager();
var applicationSettings = settingsManager.LoadSettings<ApplicationSettings>();
var emailSettings = settingsManager.LoadSettings<EmailSettings>();

しかし、これらのコンポーネントを慣例に従って登録したいので、手動で行う必要はありません。

これまでのところ、WindsorInstallers の 1 つに次のコードがあります。

    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: すべての設定タイプをコンテナーに 1 つずつ注入することはできますが、 1 つ (おそらく 2 つ) のステートメントを使用して継承するすべてのタイプを見つけて登録できるソリューションを探しています。

4

1 に答える 1