none
Deleted RRS feed

Ответы

  • MVVM - это методология проектирования для достаточно сложных приложений, к тому же заточенная под специальные требования, вроде "можно покрывать тестами отдельно логику UI". Если вы только начинаете изучать C# и разработку графических приложений, естественно она вам ничего не облегчит. Начните с основ, как выделять повторяющийся код в методы, как объединять в методы в классы, как составлять иерархии классов, представляющие модель предметной области. Проектирование UI логичным образом вытекает из этого. 

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

    Я не знаю, что такое "пассивные" и "активные" элементы. В UserControl нужно выделять то, что повторяется. Например, если в нескольких местах используется однотипная связка полей для ввода фамилии, имени, и отчества, логично вынести это в отдельный FioControl, или что-то в этом роде. Выделять все подряд в UserControl особого смысла нет. Даже если форма выглядит слишком большой, этот размер карман не тянет. В конце концов, навигация по коду в Visual Studio отлично работает, позволяя найти что угодно и в большом файле.


    • Изменено VadimTagil 22 февраля 2021 г. 17:26
    22 февраля 2021 г. 17:25

Все ответы

  • Не только можно, но и рекомендуется.

    Только это типично делается без использования #inlcude (что может создать множество проблем как то множественные определения).

    Вместо этого класс определяется в файле заголовка и добавляется произвольное число файлов .cpp где и размещается код методов класса. 

    -- foo.h

    class Foo

    {

      void Bar(); // Только декларация, кода нет

    }

    -- foo.cpp

    #include "foo.h" // или stdafx.h если используются прекомпилируемые заголовки

    void  Foo::Bar ()

    {

      // Код метода...

    }

    Можно помещать несколько методов в один файл, а можно делать отдельный файл для каждого метода. Ну или нечто среднее.

    Обычно делают два файла - .h для определения класса и .cpp для реализации методов класса. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    21 февраля 2021 г. 17:52
    Модератор
  • Можно, и нужно. Но содержимое файла в C# должно быть законченным объявлением типа. Вынести только реализацию метода в отдельный файл нельзя, хотя с использованием partial можно разделить на несколько файлов и объявление типа. 
    21 февраля 2021 г. 17:59
  • Видимо для начала надо разобраться о каком языке идет речь. :) 

    This posting is provided "AS IS" with no warranties, and confers no rights.

    21 февраля 2021 г. 18:49
    Модератор
  • >Есть класс "MyClass2" он тоже в отдельном файле, в него мне нужно передать свойства, события, переменные и тд из класса "MyClass1".

    Для этого ничего особенного делать не нужно. Любой тип в проекте C# видит любой другой тип. Необходимости включать один файл в другой нет именно по этой причине. Возможно, вы допустили тривиальную ошибку из-за которой типы или свойства не видятся, например классы объявлены в разных пространствах имен, забыли сделать какие-то свойства публичными или статическими (нестатическое свойство будет видно только на экземпляре), или какой-то файл у вас не добавлен в проект и поэтому вовсе не подается на вход компилятора (при использовании старого формата проекта, в котором требуется добавлять файлы явно). 

    >Моя реализация...

    Это вполне нормальная реализация. Необходимость выносить отдельные методы в файлы возникает редко, но когда она возникает, это делается именно так, через partial. Например, так же это сделано в библиотеке MoreLINQ, большой класс MoreEnumerable разбит на несколько файлов с частичными объявлениями, которые названы по имени метода (https://github.com/morelinq/MoreLINQ/blob/master/MoreLinq/Acquire.cs).


    22 февраля 2021 г. 6:49
  • MVVM - это методология проектирования для достаточно сложных приложений, к тому же заточенная под специальные требования, вроде "можно покрывать тестами отдельно логику UI". Если вы только начинаете изучать C# и разработку графических приложений, естественно она вам ничего не облегчит. Начните с основ, как выделять повторяющийся код в методы, как объединять в методы в классы, как составлять иерархии классов, представляющие модель предметной области. Проектирование UI логичным образом вытекает из этого. 

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

    Я не знаю, что такое "пассивные" и "активные" элементы. В UserControl нужно выделять то, что повторяется. Например, если в нескольких местах используется однотипная связка полей для ввода фамилии, имени, и отчества, логично вынести это в отдельный FioControl, или что-то в этом роде. Выделять все подряд в UserControl особого смысла нет. Даже если форма выглядит слишком большой, этот размер карман не тянет. В конце концов, навигация по коду в Visual Studio отлично работает, позволяя найти что угодно и в большом файле.


    • Изменено VadimTagil 22 февраля 2021 г. 17:26
    22 февраля 2021 г. 17:25