ISomeDataAccess
インターフェイスへデータアクセスメソッドを抽出し、MainForm
からこのインターフェイスを実現するクラスにデータアクセスロジックを転送します。この後、ChildWpf
でこのクラスを共有することができます。 ChildWpf
フォームを作成するときに、ISomeDataAccess
のインスタンスをコンストラクタパラメータとして送信します。
編集: ChildWpfプロジェクトでは、ChildWpf
にのみ必要なデータアクセスレイヤの一部を使用してインターフェイスを作成します。 DataAccess
クラスのダイレクト・アダプター・クラスを作成するか、または中間アダプター・クラスを作成することができます。
直接実装:
public class DataAccess : IChildDataAccess
{
public void SomeDataLogic1()
{}
public void SomeDataLogic2()
{}
public void SomeDataLogic3()
{}
}
public interface IChildDataAccess
{
void SomeDataLogic1();
void SomeDataLogic3();
}
または中間クラスを持つ:
public class DataAccess
{
public void SomeDataLogic1()
{}
public void SomeDataLogic2()
{}
public void SomeDataLogic3()
{}
}
public class ChildDataAccess : IChildDataAccess
{
private readonly DataAccess _dataAccess;
public ChildDataAccess(DataAccess dataAccess)
{
if (dataAccess == null)
throw new ArgumentException(nameof(dataAccess));
_dataAccess = dataAccess;
}
public void SomeDataLogic1()
{
_dataAccess.SomeDataLogic1();
}
public void SomeDataLogic3()
{
_dataAccess.SomeDataLogic3();
}
}
public interface IChildDataAccess
{
void SomeDataLogic1();
void SomeDataLogic3();
}
ここではオプションではありません。 – cantdoanything33