これは確かにあなたのほとんどのための基本的な質問ですが、私はそれについて考えてもまだ頭痛を与えています。私のアプリケーションのアーキテクチャ
私はインスタンス化されるドメイン名をとり、リポジトリクラスを持っている:
public class RepositoryUserAD : IRepositoryUserAD , IDisposable
{
PrincipalContext context;
public RepositoryUserAD(string domainName)
{
if (string.IsNullOrEmpty(domainName))
throw new Exception("the domainName cannot be null or empty");
DomainName = domainName;
context = new PrincipalContext(ContextType.Domain, DomainName);
}
public UserPrincipal GetUser(string username)
{
UserPrincipal foundUser = null;
foundUser = UserPrincipal.FindByIdentity(context, username);
return foundUser;
}
public void Dispose()
{
context.Dispose();
}
}
そしてここでは私の問題です。私がこれのように働くなら、それは大丈夫ですが、私は私の文脈をクラスで開き、クラスを処分するのをやめたいのです。 私はブロックを使用することもできますが、私はコンテキストへの参照、オブジェクトへの参照、または少なくとも私が最初に取得しなかったプロパティを失うため、別の問題に直面しています。
私のアーキテクチャは、私の一般的なアプローチで、私はサービスで私のクエリをフィルタリングし、実際にデータをフェッチするためにリポジトリを頼むことができるように言っているだろうので、私は二つに引き裂かれています以下の
Repository r = new Repository();
Service s = new Service(r);
です。しかし、ここで広告では、リポジトリレベルでの接続を開いたり閉じたりできません。柔軟性が失われ、リポジトリはすべてを取得しています。
私の頭の中でもどちらかが明確ではないので、すべてが明確ではありません。ご支援のための
おかげで、
「私の文脈をクラスで開き、クラスを処分するのが嫌いです」何故なの?あなたが実際にそれをしたくない場合は、呼び出し側にコンテキストを提供(および処分)するよう要求することができます。 –