如何在MVC 3解决方案中使用Castle Windsor Property Injection

时间:2012-02-11 15:55:46

标签: c# asp.net-mvc castle-windsor

在使用Castle Windsor的MVC解决方案中寻找有关如何使用 Property Injection 的一些文档/提示。

实现自定义成员资格提供程序,但无权访问构造函数注入。目前使用服务定位器来拉取组件,但对如何使用Windsor设置属性感到好奇。目前的代码:

public class CustomRoleProvider : System.Web.Security.RoleProvider
{
    public IRepository<User> UserRepository
    {
        get { return ServiceLocator.Current.GetInstance<IRepository<User>>(); }
    }

    public override string[] GetRolesForUser(string username)
    {
        var user = UserRepository
                            .Where(x => x.Username == username)
                            .FirstOrDefault();

        return (user==null || user.UserUserRoles==null) ? new string[] { } : user.UserUserRoles.Select(x => x.UserRole.Name).ToArray();
    }
    ...
}

1 个答案:

答案 0 :(得分:1)

无法使用角色提供程序的依赖注入,因为您的DI框架不负责其实例化和生命周期管理。服务定位器可能是最简单的方法。

您可能会尝试将Roles.Provider实例传递给Castle Windsor,以便连接属性注入。您还可以查看following article