私は3つの異なるプロジェクト(A、B、Cと呼ぶ)を持つ.NET Core(UWPソリューション)アプリケーションを持っています。1つの.NETソリューション内でプロジェクト間で通信するにはどうすればよいですか?
AとBはWindowsランタイムコンポーネントであり、Cは単純なクラスライブラリです。
プロジェクトAとBは、プロジェクトへの参照を有するC.
Iインスタンス思っ プロジェクトAとBとの間で共有されるプロジェクトCのクラスにアクセスしたいLazyの.NETメソッドを使用してシングルトンパターンに変換する4
問題は、AとBプロジェクトがインスタンスにアクセスするたびにインスタンスが同じではないという問題です。 Lazyメソッドは、以前作成されていないように見えるため、クラスの新しいインスタンスを作成します。ソリューションの異なるプロジェクト間でシングルトンを共有できるかどうかは疑問です。私は、プロジェクトがプロセスに関連付けられており、各プロセスには共有できない独自のメモリ空間があることを読んだことがあります。私の問題の解決策はありますか?
EDIT:それは城ウィンザー、Ninject、Autofacまたはユニティのようなツールを使用して異なるアセンブリ間でシングルトンを共有することが可能であり、また
private static readonly Lazy<HubService> Lazy =
new Lazy<HubService>(() => new HubService(), LazyThreadSafetyMode.ExecutionAndPublication);
private HubService()
{
_asyncQueue = new AsyncQueue<Guid>();
}
public static HubService Instance => Lazy.Value;
: はここに私のHubServiceクラスの私の実装ですか?
シングルトンの実装方法と、AとBの両方で使用する方法を確認する必要があります。 – Glubus
同じインスタンスではないため、できません。あなたのプロジェクトCアセンブリは別々にAとBにロードされ、2つのプロセス間で魔法のようにメモリを共有するだけではありません。 – LibertyLocked
クラス初期化の静的密封シングルトン実装を行います。これにより、複数のスレッドが遅延初期化にアクセスするのを防ぎます。 – Maertin