Правильный способ использования Autofac с Factory Pattern?

В проекте Winforms я настроил Autofac и Factory Pattern, и похоже, что он работает как положено. Тем не менее, я до сих пор не уверен, что следующее является лучшей практикой.

Фабричный класс это:

public static class Client
{
    public static readonly IRequestFactory RequestFactory = new RequestFactory();
}

public class Configuration
{
    public IContainer Container { get; private set; }

    public Configuration()
    {
        var builder = new ContainerBuilder();
        builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
            .Where(t => t.Name.EndsWith("Request"))
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

        Container = builder.Build();
    }
}

public class RequestFactory : IRequestFactory, IDisposable
{
    private ILifetimeScope scope;

    public RequestFactory()
    {
        scope = Client.Configuration.Container.BeginLifetimeScope();
    }

    public T Get<T>()
    {
        return scope.Resolve<T>();
    }

    public void Dispose()
    {
        if (scope != null)
        {
            scope.Dispose();
        }
    }
}

Тогда классы в отдельных сборках имеют IRequestFactory в качестве параметра ctor.

Вышеуказанный правильный способ реализации шаблонов факторов с помощью Autofac или есть лучший способ?

0 ответов

Другие вопросы по тегам