Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778

Singletone для Class library

29.10.2019, 16:42. Показов 4898. Ответов 98
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
приветствую всех,

Каждый раз в каждом class где я работаю с class library я создаю объект.
Говорят это не есть хорошо.

Например:
C#
1
2
3
4
5
6
7
8
9
10
Public class Wehicle
{
   public Wehicle()
 
             {
                    WehicleFrame = new Frame();
             }
 
              //далее пользуюсь различными методами класса Frame
}
таким же образом пользуюсь в другом классе

C#
1
2
3
4
5
6
7
8
9
10
Public class Ship
{
   public Ship()
 
             {
                    ShipFrame = new Frame();
             }
 
              //далее пользуюсь различными методами класса Frame
}
говорят это плохо, нужно сделать singleton.

Вопрос, как сделать singleton из класса Frame?

спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2019, 16:42
Ответы с готовыми решениями:

Intellisense и autocompletion в библиотеках класса (Class Library)
Глупый вопрос. Поэтому задаю здесь, хотя не совсем уж и начинающий. Создал проект из шаблона Class Library (что бы сборочку dll получить)...

Работа с DirectX: Output Type of Class Library
Доброго времени суток. Я новичок в DirectX и C#. Скачал SharpDX с примерами. Эти примеры не запускаются. Выдаёт следующее сообщение: A...

Как узнать путь к ресурсу сборки Class Library?
Здравствуйте, я разрабатываю addin для Excel. В проект addin`а я добавил ресурс: шаблон Excel. Хочу открыть его средствами...

98
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 09:21  [ТС]
Студворк — интернет-сервис помощи студентам
Элд Хасп,
реинкарнация темы. Тут хотя бы подсветка есть.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 public class MainWindowViewModel
    {
        
        private Watching_A _watching_A;
        private readonly ADC Adc;
 
        private MainWindowViewModel()
        {
            _watching_A = new Watching_A();
        }
 
        //
        public MainWindowViewModel(ADC adc) // вот это место как в VS2015 выглядит?
            : this()
            => Adc = adc;
 
 
        public void DoSmthInViewModel()
        {
 
            // _watching_A. // здесь пробовал добраться до поля adc
        }
 
 
    }

В комменте вопрос.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16153 / 11274 / 2890
Регистрация: 21.04.2018
Сообщений: 33,152
Записей в блоге: 2
14.02.2020, 09:34
Цитата Сообщение от Bulky Посмотреть сообщение
public MainWindowViewModel(ADC adc) // вот это место как в VS2015 выглядит?
            : this()
            => Adc = adc;
Это сокращённое объявление тела метода из одной строки.
Эквивалентно
C#
1
2
3
4
5
        public MainWindowViewModel(ADC adc) // вот это место как в VS2015 выглядит?
            : this()
        {
             Adc = adc;
         }
1
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 09:53  [ТС]
Элд Хасп,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 public class MainWindowViewModel
    {
       
        private Watching_A _watching_A;
        private readonly ADC Adc;
 
        private MainWindowViewModel()
        {
            _watching_A = new Watching_A();
        }
 
        //
        public MainWindowViewModel(ADC adc)
            : this()
        {
            Adc = adc;
        }
 
 
        public void DoSmthInViewModel()
        {
 
            // _watching_A. // здесь пробовал добраться до поля adc
 
            Adc.PullOut(); // теперь как бы могу добраться до методов.
        }
 
    }

Вроде как доступ к методам есть.

C#
1
Adc.PullOut(); // теперь как бы могу добраться до методов.


Элд Хасп, я потестю работает ли в реале, т.к. узнать можно только подключившись к сетке.
Вообще честно говоря хотелось бы подробные комменты по каждой добавленной строке, ну просто для чайников. И что мы делаем в APP.xaml.cs тоже. Hачиная от того откуда ноги растут.
Так сказать полную трассировку.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16153 / 11274 / 2890
Регистрация: 21.04.2018
Сообщений: 33,152
Записей в блоге: 2
14.02.2020, 10:07
Цитата Сообщение от Bulky Посмотреть сообщение
Hачиная от того откуда ноги растут.
У вас, скорее всего, типичное заблуждение в целом по структуре WPF Решения.
WPF - это инструмент специально созданный для реализации View в паттерне MVVM.
А в MVVM самой важной, главной частью, слоем приложения является Модель, а не View.

Допустим, если делать развёрнутую реализацию простого WPF Решения, то оно будет состоять из порядка десяти проектов.
Из которых, собственно WPF - это только один.
И даже запускаться приложение, то есть проект с App, будет из отдельного от WPF View проекта.

Поэтому, если хотите получить опыт нормального создания WPF Решения, давайте сделаем подробную, детальную его пошаговую реализацию.
И реализовывать его надо со слоя работающего с данными, с их хранилищем.
Поэтому, первое, что надо, нормальное описание данных, их структуры.
Опишите их и начнём делать реализацию.

Добавлено через 24 секунды
Цитата Сообщение от Bulky Посмотреть сообщение
Вообще честно говоря хотелось бы подробные комменты по каждой добавленной строке, ну просто для чайников.
Вечером - сейчас некогда.
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 10:30  [ТС]
Самому нужно стремиться все делать... Ну а без точечной помощи никак, все знать невозможно. Да и не нужно.

Если бы я читал толстые и дорогие книжки на инопланетном языке.То я бы наверное уже бросил давно читать и они уже бы покрылись пылью или уже бы давно были в "корзине".
Но "ковыряние" сутками в VS начиная с WinForms с переходом в WPF, как-то даже втянуло и инопланетный язык даже уже почти не инопланетный.

Элд Хасп,

из той же оперы,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Watching_B
    {
        
        Watching_A _watching_a;
       
        public Watching_B()
        {
 
            _watching_a = new Watching_A();
 
        }
 
 
        public void TestMethods()
        {
 
           _watching_a. // не вижу полей класса Watching_A
 
 
        }
 
    }

не вижу полей класса Watching_A несмотря что все и вся public и экземпляр создан.
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
14.02.2020, 10:34
Цитата Сообщение от Bulky Посмотреть сообщение
не вижу полей класса Watching_A несмотря что все и вся public и экземпляр создан.
Подключен проект с этим классом к текущему?
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 10:41  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Подключен проект с этим классом к текущему?
Весь прикол в том, что оба паблик класса Watching_A, Watching_B в одном namespace (project Watching).
Что-то упускаю, не знаю, да еще и забыл...
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
14.02.2020, 10:58
Bulky, подключен проект с этим классом к текущему или нет?
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 11:24  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Bulky, подключен проект с этим классом к текущему или нет?
Не знаю почему находящиеся в рамках одного проекта классы вы проверяете подключен ли содержащий классы Watching_A и Watching_B к текущему проекту.
Да референс (если я правильно понимаю слово "подключен") у текущего проекта к проекту содержащего классы Watching_A, Watching_B есть.
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
14.02.2020, 11:28
Bulky, тогда всё должно работать. Если нет, то приложите архив с минимальным количеством кода, где можно посмотреть на проблему.
0
 Аватар для dazering
92 / 62 / 31
Регистрация: 22.12.2018
Сообщений: 121
14.02.2020, 11:31
Цитата Сообщение от Bulky Посмотреть сообщение
Что-то упускаю, не знаю, да еще и забыл...
Смотрю архив скинутый Вами. Класс публичный, а его свойства, поля и тд? Их я не вижу. Их нет.
Цитата Сообщение от Usaga Посмотреть сообщение
Bulky, подключен проект с этим классом к текущему или нет?
Watching а и б в одной сборке.
Скрин прикладываю, в чём проблема?
Кликните здесь для просмотра всего текста
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
14.02.2020, 11:32
dazering, хм. Вы хотите сказать, что человек жаловался на то, что не может обратиться к членам класса, которых просто нет?
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 11:34  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Bulky, тогда всё должно работать. Если нет, то приложите архив с минимальным количеством кода, где можно посмотреть на проблему.
Текущий нетекущий проект как определяете? Чистот по смылу проектов или как-то в студии, опция.
0
 Аватар для dazering
92 / 62 / 31
Регистрация: 22.12.2018
Сообщений: 121
14.02.2020, 11:34
Usaga, как минимум я их не нашёл, и выше не было кода с их полями. Т.е. я не знаю
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 11:35  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
dazering, хм. Вы хотите сказать, что человек жаловался на то, что не может обратиться к членам класса, которых просто нет?
Сейчас скину сэмпл.

Проблема описана на двух языках внутри!

проблема оптимизации так сказать.
0
Эксперт .NET
 Аватар для Usaga
14365 / 9466 / 1360
Регистрация: 21.01.2016
Сообщений: 35,698
14.02.2020, 11:36
Bulky, человек выше говорит о том, что у вас в класс А просто нет никаких членов. Не к чему обращаться.
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 11:37  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Bulky, человек выше говорит о том, что у вас в класс А просто нет никаких членов. Не к чему обращаться.
Ждите сэмпла, все там есть и прочитайте самый первый пост.
0
 Аватар для dazering
92 / 62 / 31
Регистрация: 22.12.2018
Сообщений: 121
14.02.2020, 11:56
Цитата Сообщение от Bulky Посмотреть сообщение
Текущий нетекущий проект как определяете?
Если совсем по простому. Студия предлагает на выбор при создании проекта несколько шаблонов. Вы его выбираете. Затем создаётся Solution, к-й содержит проекты. Один Solution может содержать множество проектов. Т.е. у Вас Solution - LibDataBaseTest_01, он содержит несколько проектов: LibDataBase_3356, LibDataBaseTest_01 и Wathcing_Service.
LibDataBase_3356 и Wathcing_Service это библиотеки(сборки, DLL(после компиляции)) и LibDataBaseTest_01 это проект WPF и не просто, он содержит точку входа (метод Main) и является стартовым проектом, т.е после компиляции будет представлять собой файл Exe. Суть в том, что бы LibDataBaseTest_01 получил доступ к коду других библиотек нужно добавить ссылку на них. В старом архиве, у LibDataBaseTest_01 есть ссылка только на LibDataBase_3356. Содержимое Wathcing_Service не будет доступно LibDataBaseTest_01.
Так же есть нюанс с модификаторами доступа. Если, например, в сборке Wathcing_Service объявить классу Watching_A модификатор public, то этот класс будет доступен везде(например, LibDataBaseTest_01 увидит класс только при наличии ссылки на сборку Wathcing_Service). Или если тому же классу изменить модификатор доступа на internal, то класс будет доступен только в рамках сборки.
Цитата Сообщение от Bulky Посмотреть сообщение
Ждите
Ждём
1
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 12:11  [ТС]
Usaga,

ёлы нашел проблему с доступом к полю соседнего класса когда готовил сэмпл.

Usaga, И референсы тут не причем.

C#
1
 public  ADC adc;
Просто не только классы должны быть public но и поля тоже. Имею ввиду инциализацию объектной переменной.

В любом случае помогите пожалуйста решить проблему, что в заголовке топика и описана внутри. Пожалуйста внимательно читайте комменты внутри.
Вложения
Тип файла: zip LibDataBaseTest_01.zip (129.5 Кб, 4 просмотров)
0
-21 / 29 / 2
Регистрация: 17.03.2018
Сообщений: 778
14.02.2020, 12:30  [ТС]
йцу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2020, 12:30

Как искусственно вызвать exception в Class Library (пока пустой)
Привет! Нужно протестировать обработку Exception в project Class Library. Проект пока пустой. Как в нем исcкуственно вызвать Exception? ...

Вопрос из теста: A project with an Output Type of Class Library cannot be started directly
Вы проверяете код, написанный вашим коллегой. При компиляции Windows-приложения появляется следующее сообщение: A project with an Output...

Есть Class library (с работающим кодом) как найти то, что запускает этот код?
Привет! Есть Class library ( с работающим кодом) как найти то, что запускает этот код? public classB { int i = 30;

Можно ли в class library "запихать" интерфейс?
вопрос в шапке. ну в плане "не рекомендуется" и т.п

Нужно составить регулярное выражение для поиска <div class="market_row_name"> и <div class="market_row_price">
Заранее спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru