Как использовать Castle Windsor Property Injection в решении MVC 3 - PullRequest
1 голос
/ 11 февраля 2012

Ищите несколько документов / советов о том, как использовать Внедрение свойства в решении MVC с использованием Castle Windsor.

Реализация пользовательского поставщика членства и отсутствие доступа к внедрению конструктора.В настоящее время используется сервисный локатор для извлечения компонента, но любопытно узнать, как установить свойство с помощью 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 Ответ

1 голос
/ 11 февраля 2012

Невозможно использовать внедрение зависимостей с поставщиками ролей, поскольку ваша инфраструктура DI не отвечает за их создание и управление временем жизни.Сервисный локатор, пожалуй, самый простой способ.

Вы могли бы на самом деле попробовать передать экземпляр Roles.Provider в Castle Windsor, чтобы подключить внедрение свойства.Вы также можете взглянуть на следующую статью .

...