0
鑑於:基本autofac註冊/解析問題(InstancePerLifetimeScope)
public class Foo { };
public class Bar {
public Foo Foo { get; set; }
public Bar(Foo foo)
{
Foo = foo;
}
};
public class FooBar
{
public Bar Bar { get; set; }
public FooBar(Bar bar)
{
Bar = bar;
}
}
以下代碼:
var builder = new ContainerBuilder();
builder.RegisterType<Foo>().InstancePerLifetimeScope();
builder.RegisterType<Bar>().InstancePerLifetimeScope();
builder.RegisterType<FooBar>().InstancePerLifetimeScope();
var container = builder.Build();
FooBar foobar1;
FooBar foobar2;
using (container.BeginLifetimeScope())
{
foobar1 = container.Resolve<FooBar>();
}
using (container.BeginLifetimeScope())
{
foobar2 = container.Resolve<FooBar>();
}
Console.WriteLine(object.ReferenceEquals(foobar1, foobar2));
Console.WriteLine(object.ReferenceEquals(foobar1.Bar, foobar2.Bar));
Console.WriteLine(object.ReferenceEquals(foobar1.Bar.Foo, foobar2.Bar.Foo));
由於foobar1和foobar2是不同的lifetimescope內解決,並註冊爲InstancePerLifetimeScope,我期待:
false
false
false
但是我得到了:
true
true
true
我很明顯錯過了這裏很基本的東西 - 它是什麼?
是的,嗯;)謝謝。知道它必須是那樣的明顯。 –