Использование предварительно написанного кода представления в приложениях WinForms - PullRequest
2 голосов
/ 05 апреля 2011

Моя работа заключается в написании относительно небольших приложений WinForms на C # .NET.Иногда мне дают проекты, которые представляют собой небольшие варианты проектов, которые я уже завершил.Я смог использовать код бизнес-логики для повторного использования, абстрагируя доменную логику в ее собственную сборку, и просто ссылаясь на нее в новых проектах.

Однако мне пришлось переписать большую часть кода представления (например, формы).В прошлом я пытался использовать наследование с объектами Form, но даже при том, что оно работало, оно не сулило ничего хорошего дизайнеру, а также требовало некоторого взлома файла проекта для компиляции в правильном порядке.Есть ли простой способ использовать мой код представления для повторного использования в новых проектах?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

У меня тоже были проблемы с попыткой создать настоящие многократно используемые фрагменты кода в моих проектах winforms.

Тогда мне удалось более или менее достичь этой цели с помощью UserControls, но иногда это бывает громоздко, потому что часто требуется много свойств / методов для подкласса, когда он предназначен для повторного использования в различных проектах с совершенно другим макетом .

Именно поэтому я использую классы Helper, которые устанавливают некоторые свойства элементов управления, таким образом передавая элемент управления в параметре. Например:

void SetupEditableGrid(UltraGrid myGrid)
{
    myGrid.BackColor...
}

Кроме того, для самых сложных объектов, требующих дополнительной работы, я использую классы контроллеров, связанные с некоторыми конкретными элементами управления. Например, я использую MyEditableUltraGridController для подготовки полностью изменяемого UltraGrid необработанного Infragistic.

public class MyEditableUltraGridController()
{
    UltraGrid _myGrid;

    public MyEditableUltraGridController(UltraGrid myGrid)
    {
        _myGrid = myGrid;
        _myGrid.InitializeLayout += ... // some common initialization code
        _myGrid.KeyPressed += ... // some keystroke handling code
        ... etc ...
    }

    void InitializeLayout(object sender, EventArgs e)
    {
        ... some specific UltraGrid common initialization code
    }

    ... // some code that make my UltraGrid editable, etc...
}

Тогда, учитывая существующий элемент управления UltraGrid1 в моей форме, у меня будет:

Form_Load(object sender, EventArgs e)
{
    var MyEditableUltraGridController = 
        new MyEditableUltraGridController(UltraGrid1);
}

Я чувствую себя комфортно с этим подходом, основанным на уроках, потому что он позволяет мне поддерживать удобное управление и хорошую гибкость.

1 голос
/ 05 апреля 2011

Есть ли простой способ использовать мой код представления для повторного использования в новых проектах?

Я не знаю, что вы подразумеваете под простым способом , и я не знаю ваш точный сценарий использования, но вы можете инкапсулировать логику представления в повторно используемые элементы управления WinForms в отдельную сборку. Эти элементы управления могут содержать различные свойства, позволяющие персонализировать их для каждого проекта.

Это именно то, что делают такие компании, как Telerik и DevExpress , за исключением того, что вы можете сделать шаг вперед и даже включить некоторую бизнес-логику, которую можно использовать повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...