WPF MVVM и организация уровня доступа к данным - PullRequest
0 голосов
/ 05 апреля 2020

Я разработал свое первое приложение WPF (пытающийся) использовать MVVM. Я все еще учусь и буду рад ответить на следующие вопросы:

  1. Должен ли я сохранить класс TestReportItem в библиотеке классов Repository или переместить его в собственную библиотеку классов?

  2. Моя ViewModel не ссылается на модель. Он ссылается на класс TestReportItem. Я отображаю TestReportItem с использованием XAML и таблицы данных для доступа к строковому полю «Заголовок». Это приемлемая / лучшая практика?

enter image description here

TestReportItem

public class TestReportItem
{
    public string Title { get; set; } = string.Empty;
    public string SubTitle { get; set; } = string.Empty;
    public bool HasTable { get; set; }
    public string Reference { get; set; } = string.Empty;
    public bool HasAdditionalInformation { get; set; }
}

TestReportItemRepository

public interface ITestReportItemRepository
{
    List<TestReportItem> GetAllTestReportItems();
    TestReportItem GetByName(string testName);
}

XMLTestReportItemRepository

public class XMLTestReportTestStandardRepository : ITestReportItemRepository
    {
        private string _filePath;

        public string FilePath
        {
            get { return _filePath; }
            set { _filePath = value; }
        }

        public XMLTestReportTestStandardRepository(string sourceFilePath)
        {
            FilePath = sourceFilePath;
        }
        public TestReportItem GetByName(string testName)
        { ... }

        public List<TestReportItem> GetAllTestReportItems()
        { ... }

1 Ответ

1 голос
/ 07 апреля 2020

MVVM - это практическое правило, а не догма; это означает, что он действительно гибкий. Первоначально MVVM был основан на трехуровневой системе организации данных. Вид / Бизнес-уровень / Уровень БД. И в некотором смысле, это просто так.

Должен ли я сохранить класс TestReportItem в библиотеке классов Repository или переместить его в собственную библиотеку классов?

Находятся ли ваши классы в основном проекте или во внешней библиотеке классов до дизайна. Если дизайн требует повторного использования между различными проектами, тогда да, распакуйте его. В противном случае наличие внешнего не добавляет никакого значения, кроме разделения работы.

Помните, что внешняя библиотека в некотором смысле является другим пространством имен для структурирования вашего кода.

Моя ViewModel не ссылается на модель. Он ссылается на класс TestReportItem.

Что касается TestReportItem, то это Модель. Только потому, что он имеет / может иметь методы и операции, является спорным. Если необходимо создать частичные файлы классов, в которых свойства model esque содержатся в одном частичном коде, а операции и все в другом частичном порядке, и можно достичь разделения . Но это необязательный

шаблон данных для доступа к строковому полю "Заголовок". Является ли это приемлемой / лучшей практикой?

Получается ли Title производным или генерируется его присутствием в классе. Если это так, то да, если нет, поместите Title на основную ВМ и извлеките / соберите его в получателе Title.

...