私はasp.net mvcアプリケーションを持っています。私はIoCのための城ウィンザーを使用城ウィンザーはプロパティに依存性を注入しません
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyProject.Infrastructure.Security.MyMembershipProvider" />
</providers>
</membership>
:私はこのようなweb.configファイルにバインドされているカスタムメンバシッププロバイダ を作成しました。私はパラメータなしのコンストラクタを持たないweb.configファイルからのエラーを取得するので、私はカスタムメンバーシップクラスのためにこれを使用することはできません
SomeController(ISomething something)
{
something.do();
...
}
:通常私のようなコンストラクタ・インジェクションのものを使用します。しかし、パラメータのないコンストラクタを使用した場合、オブジェクトは初期化されません。
だから私はそうのようなプロパティインジェクションを使用:...
<castle>
<components>
<component id="usersRepos" service="MyProject.Core.Repositories.IUserRepository, MyProject.Core" type="MyProject.Data.RepositoryImplementations, MyProject.Data"></component>
</components>
</castle>
public class MyMembershipProvider : MembershipProvider
{
public IUserRepository UserRepository{get; set;}
public override bool ValidateUser(string username, string password)
{
if (UserRepository.UserExists(username, password))
{
return true;
}
return false;
}
}
をし、オブジェクト(UserRepository)が初期化されていないので、私は、オブジェクト参照の例外が見つかりませんます。
クラスは正しく登録されていますか? IUserRepositoryを解決しようとすると成功するでしょうか? –