Я не уверен, является ли это именно шаблоном 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
, но теперь у меня проблемы с его сборкой).
Как бы вы справились с этим? Должен ли я просто не разделять слой данных таким образом?