我想盡量減少使用「使用」的實體框架連接上下文範圍,同時我想能夠注入一個上下文到我的班級。 我搜索互聯網上,但並沒有發現像我這樣的情況下,還是我只是做錯了什麼,反正這裏是代碼:使用語句;爲什麼我的領域沒有設置爲空?
[TestFixture]
public class Dummy
{
private IFoo ifoo;
[Test]
public void CreateIfNotExist()
{
using (var foo = GetNewIFoo())
{
foo.Dosomething();
}
Assert.IsNull(ifoo);//test fail here
}
[Test]
public void NotCreateIfExist()
{
ifoo = new Bar();
using (var foo = GetNewIFoo())
{
foo.Dosomething();
}
Assert.IsNull(ifoo);//test fail here
}
private IFoo GetNewIFoo()
{
if (ifoo == null)
{
ifoo = new Foo();//return new Foo();
}
return ifoo;
}
}
第一次測試失敗,以foo created-的對象序列> FOO做一些事情 - > foo處理(通過在foo上調用),而狀態變量ifoo仍然是Foo()的類型。
第二次測試失敗,對象生命序列與之前相同。
我很困惑,因爲我認爲GetNewIFoo()會返回ifoo的引用,並且使用關鍵字只會在ifoo上調用dispose?
此外,有沒有什麼好的方法來控制上下文範圍,同時保持注入IContext的能力?
(澄清的稱號,因爲在C#中的`using`關鍵字的兩個完全不相干的用途; * using語句*和*使用指令*) – 2011-01-20 09:44:55
謝謝你那 – Yuan 2011-01-20 09:47:46