最終的な実装でデータ アクセス レイヤーを「非表示」にするシステムを構築しています (将来変更できるようにするため)。
つまり、アプリケーション コードは、データベース アクセス オブジェクトによって実装されるインターフェイスを呼び出すということです。したがって、インターフェースクラスがあります:
public interface DatabaseInterface
{
void Create(DataObject obj);
}
次に、インターフェースを実装するクラスがあります。
public class DatabaseAccess : DatabaseInterface
{
void Create(DataObject obj)
{
Entity dbContext = new Entity();
dbContext.Data.Add (obj);
dbContext.SaveChanged();
}
}
これらすべてをまとめると、DataObject クラスがあります。
public class DataObject
{
integer Data1;
string Data2;
}
DatabaseInterface の実装が何かわからないので、問題はメイン アプリケーションにあります。
public class CreateElementOnDatabase
{
DataObject myObj = new DataObject();
myObj.Data1 = 10;
myObj.Data2 = "Test String";
var dbAccess = new DatabaseInterface() <=== I know this is not possible, but don´t know what to do!!!!
dbAccess.Create (myObj);
}
どのクラスがそれを行ったかを知らずに、実装されたメソッドを呼び出すにはどうすればよいですか? 確かに、私のデザインには何かが欠けています。
私たちは、アプリケーションを以下のコードから完全に独立させたいと考えています。
[編集1]
これらの実装は、異なるクラス ライブラリに存在します。だから私は次のものを持っています: アプリ プロジェクト DatabaseInterface プロジェクト DatabaseAccess プロジェクト DataObject プロジェクト