У меня есть класс DependencyResolver, в котором я вручную возвращаю экземпляры объектов. Там я использовал Activator.CreateInstance. Я хотел изменить его, чтобы он использовал autofac.
Моя функция Get работает нормально:
public T Get<T>()
{
return _container.Resolve<T>();
}
Но у меня также есть функция CreateNew, где мне нужен новый экземпляр:
public T CreateNew<T>()
{
return _container.Resolve<T>();
}
Проблема в том, что я всегда получаю один и тот же экземпляр. Моя регистрация выглядит так:
var builder = new ContainerBuilder();
foreach (var dllFileName in DependencyMapping.GetAllDllFilenames())
{
builder
.RegisterAssemblyTypes(Assembly.LoadFile(Path.Combine(GetPathFromInstalledSys(), dllFileName)))
.AsImplementedInterfaces()
.SingleInstance();
}
_container = builder.Build();
Так что есть место, где я могу контролировать поведение: SingleInstance или InstancePerDependency. Но я не знаю, нужен ли пользователю новый экземпляр или нет. Есть ли способ изменить поведение при вызове CreateNew?