インターフェイスを考えます異なるデータベーススキーマを使用しますが、同じ作業を行います。これは、チームが新しいものを書いている間、古いアプリを維持する問題です。要件には、両方とも同じライブラリを使用することが含まれているため、この問題が存在します。アプリケーションは両方とも同じ外部APIを呼び出し、その呼び出しは、独自の静的クラスであるので、同じようにアクセスされる:そう、デシリアライズインタフェースパラメータ(C#の、MVC)を受け入れながら
result.add(JsonConvert.DeserializeObject<IObject>(Convert.ToString(d)));
休憩
明らかpublic static IEnumerable<IObject> List(Guid listUniqueIdentifier)
{
//a custom class to call the API
using (var cmd = new WebApiCommand())
{
//custom enum
cmd.CommandType = ApiComType.GET;
cmd.Command = "ListObjects";
cmd.Filter = listUniqueIdentifier.ToString();
IEnumerable<object> data = cmd.Execute();
var result = new List<IObject>();
foreach(var d in data)
{
result.add(JsonConvert.DeserializeObject<IObject>(Convert.ToString(d)));
}
return result;
}
}
、インターフェイスをインスタンス化することはできません。私はGUIDを使用するバージョンを構築しようとするだけではなく、失敗した場合は整数バージョンを使用します。それは少しハッキリですが、それは整数を使用している新しいDBなので、私はtry
ブロックをフロー制御として使用することになります。どのようにして、それぞれの型に対して異なるメソッドを記述しなくても、正しいオブジェクトインスタンス型(AまたはB)に逆シリアル化できますか?編集:私が見つけた解決策は通常、$型をシリアル化するか、そうでなければシリアル化中にインスタンスの型を保存することです。 APIはサードパーティのアプリケーションに接続されており、このデータを保存することができないため、これは不可能です。