0

クラスを使用して Windsor Container MembershipProvider を実装しています。実装を解決できますが、web.config から値を取得する Initialize メソッドが呼び出されません。それをインスタンス化し、Initialize メソッドを確実に呼び出すにはどうすればよいですか?

コンテナに追加するコード

container.Register(Component.For<FNHMembershipProvider>()
    .LifeStyle.Transient
    .Named("myMembershipProvider"));

container.Register(Component.For<FNHRoleProvider>()
    .LifeStyle.Transient
    .Named("myRoleProvider"));
4

1 に答える 1

0

ここで重要な点は、Membership クラスを注入しているのではなく、Membership PROVIDER を注入していることです。メンバーシップ クラスは、レジストリ エントリに基づいてメンバーシップ プロバイダーを開始し、initialize を呼び出します。メンバーシップ クラスは静的クラスであり、それを注入することはできません (ただし、静的メンバーシップ クラスを返すラッパー クラスを注入することはできますが、あまりメリットはないと思います)。

一般に、メンバーシップに DI を使用させようとすることは、その価値よりもはるかに苦痛であることがわかります。

于 2012-05-03T20:03:57.937 に答える