私は現在、パーソナルプロジェクトで現在設計上の問題があります。私はAndroidアプリ(xamarinを使用)とC#wpf windowsアプリケーションの両方を開発しています。マルチプラットフォームのlibのMVCデザインパターン
デスクトップ上のアプリケーションは、ユーザーがアンドロイドアプリの学生が実践できるいくつかのエクササイズをデザインするのに役立ちます。しかし、現在のところ、両方のアプリケーションに共通のlibを主に持つことで、コードの構造を整えたいと思っています。問題は、MVCのデザインパターンに従って、私のモデルのすべてがビューから独立しているはずです。 Androidでは、練習がいつ実行されているか、学生が押したボタンを追跡する必要があります。または、この種の情報は、練習が終わった後に保存されません。また、Windowsアプリケーションの観点からは、無駄な情報です。だからこの場合、私はこのデータを保存することができるようにアンドロイドアプリのための私のモデルの周りにラッパーの一種を書く必要がありますか?このようにMVCパターンに逆らっているようですが、これに対する解決策を見つけることはできません。より良いここに私の問題を説明するために私のモデルである:私はこれは本当に構造化する必要があるため
public class File
{
public string Name { get; set; } = "file";
public List<Module> Modules { get; set; } = new List<Module>();
}
public class Module
{
public string Title { get; set; } = string.Empty;
public string Color { get; set; } = "0xFF0000";
public List<Exercice> Exercices { get; set; } = new List<Exercice>();
}
public class Exercice
{
public string Name { get; set; } = string.Empty;
public List<string> Sounds { get; set; } = new List<string>();
public List<Unit> Units { get; set; } = new List<Unit>();
public bool Randomize { get; set; } = false;
}
public class Unit
{
public string Text { get; set; } = string.Empty;
public List<string> Sounds { get; set; } = new List<string>();
public EType Type { get; set; }
public bool Solution { get; set; } = true;
public List<UnitChild> Units { get; set; } = new List<UnitChild>();
}
public class UnitChild
{
public string Text { get; set; } = string.Empty;
public List<string> Sounds { get; set; } = new List<string>();
public EType Type { get; set; }
public bool Solution { get; set; } = true;
}
public enum EType
{
Touch,
Display,
Voice
}
すべてが、YAMLファイルからロードされ、解析されます。
私はこのクラスのそれぞれで、(UnitクラスとUnitChildクラスで)押されたものを残したいと思います。なぜなら、それは余分で、コントローラに保存する必要があるからです(私は現在書いていません実際のコーディングの前にこれを理解したいからです)。基本的に、すべてのフィールドはエクササイズの中核であり、Windowsアプリケーションに必要な唯一のデータです。
ありがとうございました!
私は、これは厄介
一般的なlibの動機についてもう一度説明してください。それは何の目的ですか? –
まあ、私は可能な限り多くのコードを再利用したいので、共通のlibはエクササイズファイルを開くこと、エクササイズの作成などに関連するすべてのものを処理しています。 libを直接変更することで動作します。 – jubertal
開けて管理するエクササイズは**あなたのアプリのビジネスロジック**です。両方のプラットフォームに共通の**機能**は何ですか? UI機能を共通のlibにエクスポートしようとしているように聞こえますが、UIはプラットフォームに依存しており、まったく共通ではありません。 –