次のコードを使用して、SM コンテナーを初期化しています。以下のコードは正常に動作します。しかし、CultureInfo インスタンスを作成するときに、別のカルチャ名を渡す必要があるという要件があります。つまり、実行時に GetCultureName() メソッドに入力を渡したいのです。これは SM の有効な使用法ですか、それともコード内で適切なカルチャー名を使用して CultureInfo を直接インスタンス化する必要があります。
public static IContainer Initialize()
{
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
x.For<ICultureInfoProvider>()
.Use<DummyCultureInfoProvider>();
x.For<IDocumentService>().Use<DummyDocumentService>()
.Ctor<CultureInfo>("cultureInfo")
.Is(i => new CultureInfo(i.GetInstance<ICultureInfoProvider>().GetCultureName()));
});
return ObjectFactory.Container;
}