私は自分のクラスにコンテキストを挿入できるようにするために、「使用」を使用してエンティティ・フレームワークの接続コンテキスト・スコープを最小化しようとしています。 私は、インターネット上で検索が、私のようなケースを見つけられませんでしたか、私は何か間違ったことをやって、とにかく、ここでのコードは次のとおりです。;私のフィールドがnullに設定されていないのはなぜですか?
[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()の型です。
2回目のテストに失敗しました。以前のオブジェクトライフシーケンスと同じです。
私はGetNewIFoo()がifooの参照を返し、キーワードを使用するとifooでdisposeを呼び出すと思っているので混乱しますか?
また、IContextを注入する機能を維持しながらコンテキストスコープを制御する良い方法はありますか?
( 'using'キーワードの2つの完全に無関係な用途がCであるとして#、タイトルを明確化; * *文を使用してディレクティブを使用して*と*) –
をいただき、ありがとうございますその – Yuan
雅、最初のアイデアは、私は元のタイトルを見た "それはすぐに正確な重複のために閉じられる"です。しかし、確かに質問は私が思ったものではありません。 –