これはまさにMVCパターンなのかどうか分かりませんが、私がしようとしているのは、すべてのデータレイヤー(いくつかの言葉ではXMLファイルにシリアライズされるもの) 。 MVCを実装することは、私の目的ではありません。だから、これがまさにMVCでないなら、私はそれでいいです。すでに混合されている場合、コントローラとモデルを分離する方法は?
言ってやるが、例えば、私はこのクラスを持っている(これらは私の問題を説明しようとするだけのサンプルクラスではなく、私の実際のクラスである):
public class MixedSubClass
{
public string SomeData {get;set;}
public void DoSomeActionWhichRequiresControls(Control someControl)
{
// do stuff
}
}
public class MixedClass
{
private Control _SomeControl;
public List<MixedSubClass> _SubClasses = new List<MixedSubClass>();
public List<MixedSubClass> SubClasses { get { return _SubClasses; } }
public MixedClass(Control someControl)
{
_SomeControl = someControl;
}
public void DoSomeMoreActionsWhichRequiresControls()
{
foreach (var subClass in SubClasses)
{
subClass.DoSomeActionWhichRequiresControls(_SomeControl);
}
// Do more stuff
}
}
私はMixedClass
をシリアル化するときだから、唯一の公共のフィールドはシリアル化された取得しますそれは私が望むものです。しかし今では、Windows.Forms
アセンブリを必要としない唯一のデータレイヤーが必要です。私はこれと一緒にいたい:
public class MixedSubClass
{
public string SomeData {get;set;}
}
public class MixedClass
{
public List<MixedSubClass> _SubClasses = new List<MixedSubClass>();
public List<MixedSubClass> SubClasses { get { return _SubClasses; } }
}
これをすべて独立したアセンブリに入れてください。しかし、今私の問題は、これを前のものに戻す方法です。私が最初に考えたのは、拡張メソッドを使用していたのですが、私のサンプルコードでわかるように、ときどきControl _SomeControl
のような、シリアル化できない値を保存する必要があります。実際のところ、これらのリストはリスト、ツリー、それほど複雑なもののリストなので、私が始める前に良い基礎が必要です(実際にはすでに自分のすべてのデータレイヤーを持つプロジェクトがあり、Windows.Forms
しかし、今私はそれを一緒に戻すのに問題があります)。
これはどのように処理しますか?この方法でデータレイヤーを分割しないでください。