|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
||||||
Создание экземпляров классов исключительно как полей/свойств других объектов03.09.2025, 00:16. Показов 2336. Ответов 21
Метки нет (Все метки)
Добрый день!
Допустим, имеется два класса
ClassProperty нельзя было создать вне экземпляров класса SomeClass?Пока мне видится описывать SomeClass и ClassProperty в отдельной .dll и делать internal ClassProperty (если это так работает вообще). Но ClassProperty может понадобиться и для совершенно других классов, описываемых в других сборках, про существование которых я ещё не знаю. Наверняка имеются стандартные инструменты/шаблоны мне пока неизвестные.
0
|
||||||
| 03.09.2025, 00:16 | |
|
Ответы с готовыми решениями:
21
Связывание значений полей и свойств объектов разных классов
В классе данных определите переменные экземпляров.Значения переменных экземпляров должны быть введены с клавиатуры |
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
||||
| 03.09.2025, 10:02 | ||||
|
0
|
||||
|
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 962
|
||||||
| 03.09.2025, 11:20 | ||||||
0
|
||||||
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
|||||||||||||
| 03.09.2025, 12:05 [ТС] | |||||||||||||
Воздух, Вода и Температура. Экземпляр класса Температура можно создать в экземпляре классов Воздух и Вода, но вот вне их нельзя, так как не может быть температуры "ничего".Есть ощущение, что должны быть какие-то специальные паттерны агрегации/композиции для подобных задач. Добавлено через 4 минуты public ClassProperty classProperty { get; } = new(); компилятор выдаёт ошибку CS0053.Требуется что-то вроде такого:
- во-первых, описать ClassProperty где-то в одном месте один раз. Думал создать public abstract class ClassPropertyBase и от него наследоваться, но ведь его всё равно нужно будет реализовывать в каждом SomeClass.- во-вторых, объекты класса ClassProperty могли создаваться только внутри объектов SomeClass. Т. е., чтобы было нельзя сделать вот так:
0
|
|||||||||||||
|
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 962
|
||
| 03.09.2025, 14:03 | ||
|
0
|
||
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
|||||||
| 03.09.2025, 14:22 | |||||||
1
|
|||||||
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
|||||||||||
| 05.09.2025, 19:11 [ТС] | |||||||||||
|
Сделал вариант без интерфейса. Класс доступен вне объектов, но при попытке создания экземпляра даёт исключение.
Далее непонятно, каким образом это исключение нужно обработать, чтобы объект не был создан? Или он и так не будет создан?
0
|
|||||||||||
|
|
||
| 05.09.2025, 21:49 | ||
|
Добавлено через 3 минуты Если нужно чтобы внешние сборки могли добавлять себя, то делаете internal метод в запечатанном классе, который вызываете из внешней сборки. Этот метод будет передавать интерфейс фабрики в класс, который должен получить доступ. Скорее всего нифига не поймёте с моего объяснения, но сейчас скинуть код не могу.
0
|
||
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
|||
| 05.09.2025, 22:50 | |||
|
1
|
|||
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
||||||||
| 06.09.2025, 15:05 [ТС] | ||||||||
![]()
0
|
||||||||
|
|
||
| 06.09.2025, 17:12 | ||
|
Перечитайте тему что я указал выше. Там скидывали разные приёмы упаковки: - вынос в интерфейс и работы с ним - инжект конструктора через делагат нужным классам - просто запаковка класса внутри другого
1
|
||
|
Модератор
|
|||||||
| 07.09.2025, 00:26 | |||||||
Экземпляры ClassProperty можно создавать только методом экземпляра SomeClass.Create(). Но использовать эти экземпляры можно в каких угодно сборках. Добавлено через 6 минут Пример из .Net класс DataRow
1
|
|||||||
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
|
| 07.09.2025, 14:03 | |
|
0
|
|
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
|||
| 07.09.2025, 15:20 [ТС] | |||
|
0
|
|||
|
Модератор
|
||||||||||||
| 07.09.2025, 15:29 | ||||||||||||
|
Речь же о том, чтобы отлавливать такие ситуации ещё на стадии написания кода. Конкретно в этом случае, экземпляр всё равно будет создан, но в консоль будет выведено сообщение об ошибке. new всегда завершается созданием экземпляра или вылетом исключения.Обработка такого исключения должна быть на уровне вызова new или выше.В данном случае, корректный код для отбоя создания экземпляра должен быть такой:
По месту использования
1
|
||||||||||||
|
5 / 3 / 2
Регистрация: 27.04.2022
Сообщений: 60
|
|
| 07.09.2025, 15:45 [ТС] | |
|
0
|
|
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
||
| 07.09.2025, 16:01 | ||
|
0
|
||
|
Модератор
|
||
| 07.09.2025, 16:07 | ||
|
Правильно так: new всегда завершается созданием экземпляра. Если при создании экземпляра возникнет исключение (это может быть при инициализации членов типа или экземпляра, при выполнении кода конструктора), new не завершится, а исключение, прервавшее его выполнение, будет передано выше.
0
|
||
| 07.09.2025, 16:07 | |
|
Помогаю со студенческими работами здесь
20
Клиент-сервер: Оповещение о событии других классов в зависимости от значения одного из полей Вывод в DataGridView полей некоторого экземпляра класса, в котором одно из полей является списком List
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|