【发布时间】:2021-01-11 21:38:06
【问题描述】:
我有一个类“DependencyResolver”,我在其中手动返回对象的实例。在那里我使用了“Activator.CreateInstance”。 我想改变它,让它使用 autofac。
我的“获取”函数运行良好:
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”时有什么方法可以改变行为吗?
【问题讨论】: