using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.T
hreading.Tasks;
using Autofac;
namespace AutoFacStudy
{
class
PRogr
am {
static void M
ain(string[]
args)
{
VAR buider = new ContainerBuilder();
buider.RegisterType<服务>();
buider.RegisterType<仓储A>();
buider.RegisterType<仓储B>();
buider.RegisterType<工作单元>().InstancePerLifetimeScope();
var container = buider.Build();
dyn
amic 服务 = container.Resolve<服务>();
//下边两行代码输出一样
Console.Wr
ITeLine(服务.仓储A.工作单元.GetHashCode());
Console.WriteLine(服务.仓储B.工作单元.GetHashCode());
}
}
p
ublic class 服务
{
private readonly 仓储A _仓储A;
private readonly 仓储B _仓储B;
public 服务(仓储A 仓储A, 仓储B 仓储B)
{
_仓储A = 仓储A;
_仓储B = 仓储B;
}
public 仓储A 仓储A
{
get { return _仓储A; }
}
public 仓储B 仓储B
{
get { return _仓储B; }
}
}
public class 工作单元 { }
public class 仓储A
{
private readonly 工作单元 _工作单元;
public 仓储A(工作单元 工作单元)
{
_工作单元 = 工作单元;
}
public 工作单元 工作单元
{
get { return _工作单元; }
}
}
public class 仓储B
{
private readonly 工作单元 _工作单元;
public 仓储B(工作单元 工作单元)
{
_工作单元 = 工作单元;
}
public 工作单元 工作单元
{
get { return _工作单元; }
}
}
}
public class 工作单元工厂
{
public static 工作单元 创建()
{
var 工作单元 = (工作单元)CallContext.GetData("工作单元");
if (工作单元
== null)
{
工作单元 = new 工作单元();
CallContext.SetData("工作单元", 工作单元);
}
return 工作单元;
}
}