Правильный способ использования 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 или есть лучший способ?