powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#. Организация пректа.
15 сообщений из 15, страница 1 из 1
C#. Организация пректа.
    #38063156
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос , собственно, не по языку, а по организации большого проекта, которого еще нет. :)
Пару дней назад начал изучать и писать проект на C#. Некогда, что было давно и уже неправда, неплохо знал и работал с С++. Пару пректов сделал на VB.NET.
С C# возникли сложности с организацией.
1. Создаем проет Windows Form. Получается, что остальные классы порождаются формой. Полагаю, что это не есть оч. хорошо.
Но если сделать класс с функцией Main(), и оттуда запускать форму возникают проблемы (сложности) с обменом данными формы с другими классами, исполняемыми вне контекста формы.
2. Нужно где-то определить-объявить типы данных проекта и глобальные переменные, используемые во всем проекте. Не в форме же это делать. В VB.NET делал модуль и там размещал все объявления типов и глобальных переменных. Header файлов нет, и в using их вроде не пришьешь.

В общем, как правильно и логично организовать структуру проекта?

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063163
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про static класс что ли спрашиваешь?
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063177
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA...1. Создаем проет Windows Form. Получается, что остальные классы порождаются формой....
Чего бы это вдруг?!
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063194
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее про иерархию. Как ее строить?
ИМХО, не рацо когда основная программа исполняется в потоке формы, а организация и управление др. потокоми тоже осуществляется из потока формы.
Да, а static class разве отменяет префиксы к типам данных при использовании в др. классах?
Да и непонятно как передавать события в программе в форму, если она (форма) прицеплена где-то сбоку.
В общем, надо с самого начала грамотно выстроить иерархию. С С++ b VB.NET как-то попроще было.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063205
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexxxxxYUBA...1. Создаем проет Windows Form. Получается, что остальные классы порождаются формой....
Чего бы это вдруг?! Ну, создаются из формы. Я не про наследование. А как иначе, если старт программы идет создание формы. Main() нет. Или где-то закопана в авто-создаваемом коде?
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063212
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA1. Создаем проет Windows Form. Получается, что остальные классы порождаются формой. Полагаю, что это не есть оч. хорошо.
Если под "порождением классов" ты имеешь в виду создание их экземпляров, то улучшить ситуацию можно путем использоания паттеррнов MVC, MVP, MVVM и т.п.

YUBAНо если сделать класс с функцией Main(), и оттуда запускать форму возникают проблемы (сложности) с обменом данными формы с другими классами, исполняемыми вне контекста формы.
У тебя в проекте и так уже есть функция Main запускающая форму так что вопрос непонятен.

YUBA2. Нужно где-то определить-объявить типы данных проекта и глобальные переменные, используемые во всем проекте. Не в форме же это делать. В VB.NET делал модуль и там размещал все объявления типов и глобальных переменных. Header файлов нет, и в using их вроде не пришьешь.
Модуль VB.NET эквивалентен static классу в C#. В нем можно разместить глобальные данные, но классы лучше объявлять в отдельных файлах.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063241
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAСкорее про иерархию. Как ее строить?
ИМХО, не рацо когда основная программа исполняется в потоке формы, а организация и управление др. потокоми тоже осуществляется из потока формы.
В общем, надо с самого начала грамотно выстроить иерархию.
Какая связь между потоками и иерархией наследования?

YUBAДа и непонятно как передавать события в программе в форму, если она (форма) прицеплена где-то сбоку.
Объявляешь класс с событием и кодом генерирующим это событие. В форме создаешь экземпляр этого класса (или передаешь его конструктору форму), подписываешься на нужное событие. Обрабатываешь его.

YUBAДа, а static class разве отменяет префиксы к типам данных при использовании в др. классах?
Какие еще префиксы? Имя класса что-ли? Нет, не отменяет - таковы правила языка.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063337
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA... А как иначе, если старт программы идет создание формы. Main() нет. Или где-то закопана в авто-создаваемом коде?
Речь точно идет про C#, или все таки про VB.NET?!
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063390
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О С#.
Main() нашлась. :) Была закопана в автокоде. В самом "Полном руководстве по C#" об этом вообще ничего. И о многом другом тоже. :) А ведь около 1000 страниц.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063400
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAО С#.Main() нашлась. :) Была закопана в автокоде....
Ну не такой уж это и автокод! Попробуйте включите отображение скрытых файлов проекта и используйте какой нибудь инструментец на подобие ServiceModel Metadata Utility или чего-то подобного. Вот там Вам покажут настоящий автокод! )
А Program.cs это просто шаблонный файл, отправная точка, и всего-то.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063411
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxx, имелся в виду автоматически сгенирированный.
А скрытые, да включил. Как-то из головы вылетело.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063598
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришел к выводу, что надо делать базовый класс проекта, и остальные базовые классы наследовать от него. Тогда глобальные типы, функции и константы будут непосредственно доступны без префиксов. Практически, вместо header файла.
//Кстати, можно-ли некий класс использовать в using <Class>? Незя. "Класс не является пространством имен..."
1.Форме(ам) передать интерфейс базового класса. Это сработает? В плане доступа.
2.Пока не понимаю, куда деть глобальные переменные? В С++ я как-то это делал, что было давно, и неправда. :)
Ну да, какой нибудь отдельный класс заведу для этих целей. Финт со static классом с этой целью не прокатил. Среда ругается, не понял на что.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063614
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAПришел к выводу, что надо делать базовый класс проекта, и остальные базовые классы наследовать от него. Тогда глобальные типы, функции и константы будут непосредственно доступны без префиксов. Практически, вместо header файла.
Делать базовый класс нужно когда есть общая функциональность, а не общий набор всего подряд. Типы и так доступны всем классам в проекте. Функции выносим в базовый класс, если предполагается наличие типов с общей функциональностью, или создаем static класс, или используем extension методы. С константами по аналогии.

YUBAбудут непосредственно доступны без префиксов. Практически, вместо header файла.
Дались тебе эти "префиксы". Кроме того ты напрасно пытаешься переносить идеологию C++ в C#. Это совершенно разные языки.

YUBA//Кстати, можно-ли некий класс использовать в using <Class>? Незя. "Класс не является пространством имен..."
using нужен чтобы не набирать полные имена классов, а не для того чтобы избавиться от "префиксов".

YUBA1.Форме(ам) передать интерфейс базового класса. Это сработает? В плане доступа.
Что значит передать интерфейс базового класса? Зачем вообще это делать когда наследник и так имеет доступ ко всей protected/public функциональности базового класса?

YUBA2.Пока не понимаю, куда деть глобальные переменные? В С++ я как-то это делал, что было давно, и неправда. :)
Тебе уже ответили - используй static класс.

YUBAНу да, какой нибудь отдельный класс заведу для этих целей. Финт со static классом с этой целью не прокатил. Среда ругается, не понял на что.
Приведи код и ошибку.

P.S. Твоя главная проблема - плохое знание языка. Отсюда все трудности. Читай Рихтера CLR via C#.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38063657
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAПрактически, вместо header файла.В C# наиболее близкий аналог - интерфейсы.

YUBA//Кстати, можно-ли некий класс использовать в using <Class>? Незя. "Класс не является пространством имен..." using MyClass = MyNamespace.MyClass;
Но, имхо, это нужно в основном для разрешения конфликтов. И, то, фиг знает.
...
Рейтинг: 0 / 0
C#. Организация пректа.
    #38064007
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileP.S. Твоя главная проблема - плохое знание языка. Отсюда все трудности. Читай Рихтера CLR via C#.
Книгу найду, спасибо.
То правда. 5-й день пошел как с ним работаю.
Пока единственная книга "Уотсон К., Нейгел К., Педерсен Я.Х., Рид Дж., Скиннер М. Visual C# 2010 полный курс ". Средней паршивости книга. Ну да MSDN есть, если-б знать что искать. :)
bazileДались тебе эти "префиксы". Кроме того ты напрасно пытаешься переносить идеологию C++ в C#. Это совершенно разные языки.А ведь правда. Как-то зациклился на этом. Похоже сам создаю себе сложности. Действительно, не надо этого делать. Static классы где нибудь в сторонке и даже интересней получится.
bazileПриведи код и ошибку.Ошибка выполнения. Без static в том же виде все ОК. Проба пера была, уже удалил.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#. Организация пректа.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]