public class FooModel // ORM generated
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public int Age { get; set; }
public int CategoryId { get; set; }
}
< /code>
show viewmodel < /strong> < /p>
public class FooDisplayViewModel // use for "details" view
{
[DisplayName("ID Number")]
public int Id { get; set; }
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Email Address")]
[DataType("EmailAddress")]
public string EmailAddress { get; set; }
public int Age { get; set; }
[DisplayName("Category")]
public string CategoryName { get; set; }
}
< /code>
edit viewmodel < /strong> < /p>
public class FooEditViewModel // use for "edit" view
{
[DisplayName("First Name")] // not DRY
public string FirstName { get; set; }
[DisplayName("Last Name")] // not DRY
public string LastName { get; set; }
[DisplayName("Email Address")] // not DRY
[DataType("EmailAddress")] // not DRY
public string EmailAddress { get; set; }
public int Age { get; set; }
[DisplayName("Category")] // not DRY
public SelectList Categories { get; set; }
}
< /code>
Обратите внимание, что атрибуты на ViewModels не сухие-много информации повторяется. Теперь представьте, что этот сценарий умножен на 10 или 100, и вы можете увидеть, что он может быстро стать довольно утомительным и склонным к ошибкам, чтобы обеспечить согласованность между ViewModels (и, следовательно, по представлениям). < /P>
Как я могу «высушить» этот код? Пробовал это, но это не сработало, потому что мне нужно сохранить «ViewModels» в плоских ». Другими словами, я не могу просто сочинять каждую ViewModel с моделью-мне нужно, чтобы моя просмотра была только свойства (и атрибуты), которые следует поглощать представлением, и представление не может привести к всплескам, чтобы получить значения. Это определенно уменьшает объем не сухих кода, но не устраняет его. Обратите внимание, что в моем примере выше, атрибут DisplayName
для свойства категории должен быть записан дважды, потому что тип данных свойства отличается между отображением и редактированием ViewModels. Это не будет иметь большого значения в небольших масштабах, но по мере того, как размер и сложность проекта увеличивается (представьте себе гораздо больше свойств, больше атрибутов на свойство, больше видов на модель), все еще есть потенциально для «повторения себя» достаточного количества. Возможно, я здесь слишком далеко забираю, но я все еще предпочел бы иметь все свои «дружелюбные имена», типы данных, правила проверки и т. Д.>
Этот вопрос был вдохновлен моей борьбой с ASP.NET MVC, но я думаю, что он применим и к другим ситуациям. /> [code]public class FooModel // ORM generated { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string EmailAddress { get; set; } public int Age { get; set; } public int CategoryId { get; set; } } < /code>
show viewmodel < /strong> < /p>
public class FooDisplayViewModel // use for "details" view { [DisplayName("ID Number")] public int Id { get; set; }
[DisplayName("First Name")] public string FirstName { get; set; }
[DisplayName("Last Name")] public string LastName { get; set; }
[DisplayName("Email Address")] [DataType("EmailAddress")] public string EmailAddress { get; set; }
public class FooEditViewModel // use for "edit" view { [DisplayName("First Name")] // not DRY public string FirstName { get; set; }
[DisplayName("Last Name")] // not DRY public string LastName { get; set; }
[DisplayName("Email Address")] // not DRY [DataType("EmailAddress")] // not DRY public string EmailAddress { get; set; }
public int Age { get; set; }
[DisplayName("Category")] // not DRY public SelectList Categories { get; set; } } < /code>
Обратите внимание, что атрибуты на ViewModels не сухие-много информации повторяется. Теперь представьте, что этот сценарий умножен на 10 или 100, и вы можете увидеть, что он может быстро стать довольно утомительным и склонным к ошибкам, чтобы обеспечить согласованность между ViewModels (и, следовательно, по представлениям). < /P>
Как я могу «высушить» этот код? Пробовал это, но это не сработало, потому что мне нужно сохранить «ViewModels» в плоских ». Другими словами, я не могу просто сочинять каждую ViewModel с моделью-мне нужно, чтобы моя просмотра была только свойства (и атрибуты), которые следует поглощать представлением, и представление не может привести к всплескам, чтобы получить значения. Это определенно уменьшает объем не сухих кода, но не устраняет его. Обратите внимание, что в моем примере выше, атрибут DisplayName [/code] для свойства категории должен быть записан дважды, потому что тип данных свойства отличается между отображением и редактированием ViewModels. Это не будет иметь большого значения в небольших масштабах, но по мере того, как размер и сложность проекта увеличивается (представьте себе гораздо больше свойств, больше атрибутов на свойство, больше видов на модель), все еще есть потенциально для «повторения себя» достаточного количества. Возможно, я здесь слишком далеко забираю, но я все еще предпочел бы иметь все свои «дружелюбные имена», типы данных, правила проверки и т. Д.>
У меня есть файл mqclient.ini, который содержит настройки уровня TCP, такие как ClntRcvBuffSize, ClntSndBuffSize, Connect_Timeout, KeepAlive и настройки SSL, такие как OutboundSNI, AllowTLSV13 и т. д.
Также у меня есть файл CCDT, который содержит...
У меня есть файл mqclient.ini, который содержит настройки уровня TCP, такие как ClntRcvBuffSize, ClntSndBuffSize, Connect_Timeout, KeepAlive, и настройки SSL, такие как OutboundSNI , AllowTLSV13 и т. д.
Также у меня есть файл CCDT, который содержит...