Могу ли я использовать свой проект Ninject .NET в Orchard CMS?

Я создаю веб-сайт с использованием Orchard CMS, и у меня есть внешний проект .NET, написанный с использованием Ninject для внедрения зависимостей, который я хотел бы использовать вместе с модулем в Orchard CMS. Я знаю, что Orchard использует Autofac для внедрения зависимостей, и это вызывает у меня проблемы, так как я никогда раньше не работал с DI.

Я создал модуль Autofac,UserModule, который регистрирует источник,UserRegistrationSource, как это:

UserModule.cs

public class UserModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterSource(new UserRegistrationSource());
    }
}

UserRegistrationSource.cs

public class UserRegistrationSource : IRegistrationSource
{
    public bool IsAdapterForIndividualComponents
    {
        get { return false; }
    }

    public IEnumerable<IComponentRegistration> RegistrationsFor(Service service, Func<Service, IEnumerable<IComponentRegistration>> registrationAccessor)
    {
        var serviceWithType = service as IServiceWithType;
        if (serviceWithType == null)
            yield break;

        var serviceType = serviceWithType.ServiceType;
        if (!serviceType.IsInterface || !typeof(IUserServices).IsAssignableFrom(serviceType) || serviceType != typeof(IUserServices))
            yield break;

        var registrationBuilder = // something...

        yield return registrationBuilder.CreateRegistration();
    }
}

UserServices.cs

public interface IUserServices : IDependency
{
    void Add(string email, string password);
}

public class UserServices : IUserServices
{
    private readonly EFMembershipManager _manager;

    public UserServices(EFMembershipManager manager)
    {
        _manager = manager;
    }

    public void Add(string email, string password)
    {
        _manager.createUser(email, password);
    }
}

EFMembershipManager.cs конструктор

public EFMembershipManager(ServerRepository db,
                           ServerRepositoryMembershipProvider membershipProvider,
                           string testUsername,
                           string serverUsername)
{
...
}

EFMembershipManager класс из внешнего проекта, который использует Ninject для DI и используетServerRepository а такжеServerRepositoryMembershipProvider кого также вводят с помощью Ninject.

И теперь я застрял ...

ДолженUserRegistrationSource возьмите контейнер Ninject (ядро) в качестве аргумента конструктора и попытайтесь найтиIUserServices обслуживать, а затем передавать разрешения для ядра Ninject и возвращать пустое Enumerable, чтобы Autofac не пытался разрешить что-либо, связанное сIUserServices или это неправильный подход?

Ответы на вопрос(1)

Ваш ответ на вопрос