![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: нет Всего: 9 |
Всем привет.
Нужно небольшое пояснение. Есть интерфейс IMyInterface в котором объявлено одно поле X. Есть реализация интерфейса Class1, который содержит данное поле X + добавлено поле с именем Y. И есть Class2 в котором в методе My создаются экземпляры класса. В первом случае есть доступ к полю Y, хотя не должно быть? Во втором случае нет доступа как и ожидалось. В чем проблема?
-------------------- Фсё будет хорошо!!! |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Первый вариант использует class initializer, которому абсолютно всё равно, как ты объявишь переменную - хоть object; зная о классе и его свойствах, он даёт возможность проинициализировать всё, что возможно.
|
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: нет Всего: 9 |
А как тогда можно сделать так, что бы при сериализации объекта, поле Y было скрыто?
Добавлено через 2 минуты и 38 секунд Очень нужно скрыть это поле. Иначе держу два класса с разными наборами полей:( -------------------- Фсё будет хорошо!!! |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
можно так:
IMHO но, скорее всего это больше похоже на косяк, который может вылезти в дальнейшем. Кто то должен всегда помнить, что хоть класс и приходит откуда-то и десериализуется, но все равно в нем есть поля которые никак не заполняются в этом процессе и их кто то должен будет заполнить. |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Сериализатору тоже абсолютно не интересно, как ты объявил переменную - это, вообще, не так и много кого волнует. Свойства как были у экземпляра. так они и остались, а сериализатор твой, почти уверен, работает с публичными свойствами.
Судя по документации, ты можешь использовать JsonIgnoreAttribute или NonSerializedAttribute, чтобы исключить свойство из сериализации. Опоздал ![]() Согласен, что попахивает чем-то дурным. Это сообщение отредактировал(а) mihryak - 15.10.2014, 11:07 |
|||
|
||||
Экскалупатор |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
[NonSerialized] не работает с свойствами, ему нужны переменные.
По крайней мере у меня ругается, если так написать:
для свойств еще подойдет [DataContract]/[DataMember]
|
||||
|
|||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: нет Всего: 9 |
Всем спасибо:)
-------------------- Фсё будет хорошо!!! |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |