Windsor Castle does not infuse property dependency

I have an asp.net mvc application. I created a custom membership provider which is linked in the web.config like this:

<membership defaultProvider="MyMembershipProvider">
    <providers>
        <clear/>
        <add name="MyMembershipProvider" type="MyProject.Infrastructure.Security.MyMembershipProvider" /> 
    </providers>
</membership>

      

I am using Castle Windsor for IoC. I usually use constructor injection something like:

SomeController(ISomething something)
{
  something.do();
  ...
}

      

I cannot use this for a custom membership class because I am getting an error from web.config that I have no parameterless constructor. But if I used a parameterless constructor, the object would not be initialized.

So, I used property injection like this:

<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;
    }
}

      

And I am getting an object reference not found exception because the (UserRepository) object has not been initialized.

+2


source to share


1 answer


Membership providers cannot be operated by Windsor (or at least nobody seems to bother to know how to do it), so they never get anything that is introduced. See for a workaround.



UPDATE: I wrote about an improvement, seamless workaround

+2


source







All Articles