ASMX, Property with private or internal set
От: Apolonov Mykhailo Украина https://www.mcpvirtualbusinesscard.com/VBCServer/mapolonov/profile
Дата: 01.07.11 08:52
Оценка:
Всем привет.
Столкнулся с такой проблемой.
Есть в классе property

[Serializable]
public class Building
{
internal bool _locked = false;
public bool Locked
{
get { return _locked; }
internal set { _locked = value; }
}

...

Сериализация такого поля соответственно не работает в простом ASMX, получаю ошибку:
System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS0200: Property or indexer 'Impl.Building.Locked' cannot be assigned to -- it is read only


Вопрос: как побороть?
"В сущности все относительно" Гегель.
Re: ASMX, Property with private or internal set
От: Александр Кузнецов Россия  
Дата: 01.07.11 09:28
Оценка:
Здравствуйте, Apolonov Mykhailo, Вы писали:

AM>Вопрос: как побороть?


На сколько я помню — никак. Стандартный сериализатор требует наличия public сеттера. Так что варианты:
1. Сделать public.
2. Сделать собственный сериализатор
3. Сделать отдельный класс для бизнес-логики со всеми необходимыми ограничениями, и упрощенный класс только для передачи данных через сервис.

Если вариант 1 не возможен, то обычно идут по пути 3. 2 — для особых извра... в смысле, гурманов, или очень специфических задач.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re[2]: ASMX, Property with private or internal set
От: Apolonov Mykhailo Украина https://www.mcpvirtualbusinesscard.com/VBCServer/mapolonov/profile
Дата: 01.07.11 10:16
Оценка:
Здравствуйте, Александр Кузнецов, Вы писали:

АК>Здравствуйте, Apolonov Mykhailo, Вы писали:


AM>>Вопрос: как побороть?


АК>На сколько я помню — никак. Стандартный сериализатор требует наличия public сеттера. Так что варианты:

АК>1. Сделать public.
АК>2. Сделать собственный сериализатор
АК>3. Сделать отдельный класс для бизнес-логики со всеми необходимыми ограничениями, и упрощенный класс только для передачи данных через сервис.

АК>Если вариант 1 не возможен, то обычно идут по пути 3. 2 — для особых извра... в смысле, гурманов, или очень специфических задач.


Так собственно и предполагал. Спасибо за подтверждение моих мыслей -)
"В сущности все относительно" Гегель.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.