私はautofacを使っています。これまではコンストラクタインジェクションのすべての依存関係を解決しています。手動で作成されたオブジェクトに動作を注入します
与えられた顧客クラスを考慮:要求またはGUIのアクションに基づいて、新たな顧客のオブジェクトを作成するために
public class Customer : ICustomer
{
public string Name { get; set; }
private int ExternId { get; set; }
public IExternalIdProvider externalIdProvider { get; set; }
public Customer()
{
this.externalIdProvider = new ConcreteIdProvider(this);
}
public BevorSave()
{
this.ExternId = externalIdProvider.GetNextId();
}
}
は私がはまり込む場合があります。私は新しいオペレータを使用します。しかし、 - 私は私が注入したいCustomerClass内にIdProviderがあります。 (プロパティとして)。
お客様は、私のような設定を使用することになり、IOCコンテナによって解決されるだろう場合:
builder.RegisterType<ConcreteIdProvider>().As<IExternalIdProvider>();
builder.RegisterType<Customer>().As<ICustomer>()
.OnActivated(ae =>
{
IExternalIdProvider idProvider =
ae.Context.Resolve<IExternalIdProvider>(TypedParameter.From(ae.Instance));
ae.Instance.externalIdProvider = idProvider;
});
、私の質問は:私がお客様にExternalIdProviderの行動を注入することができますどのように?
は、この記事では、サンプルを示し(autofacを使用して)、これはサービスロケータで行われるだろうか。あなたの助けを http://blogs.msdn.com/b/simonince/archive/2008/06/30/dependency-injection-is-dead.aspx
感謝。
[機能しない]コードスニペットを使って何をしようとしているのかを明確にする必要があります。あなたがプロパティを注入したいだけなら、あなたは顧客登録時にAutofacのPropertiesAutowired関数を使うことができますが、私はそれがあなたの後ろではないと推測しています。リンクした例は、アスペクト指向プログラミングのためのPostSharpの使用を示しています。これは、依存関係解決の枠組みではなく、その例の鍵です。 –