Отключение сериализации для некоторых свойств COM объекта
От: JohanTG  
Дата: 10.06.08 04:24
Оценка:
Описание: Существует некий объект, держащий COM-интерфейс. Необходимо его отобразить на странице в виде JavaScript объекта (JSON-сериализация). Так как в явную такая сериализация не проходит, создаю обёртку C# класса, пронаследованного от этого интерфейса. Всё отлично, но оказалось, что некоторые свойства (Property) сериализовать не нужно.

Вопрос: как отключить сериализацию для таких свойств?

ЗЫ: для JSON-сериализации использую System.Web.Script.Serialization.JavaScriptSerializer
Re: Отключение сериализации для некоторых свойств COM объект
От: Neco  
Дата: 10.06.08 05:01
Оценка:
JTG>Вопрос: как отключить сериализацию для таких свойств?
ммм... ручками сериализовать?...
хотя не вполне понимаю об чём речь, поэтому может и глупость сморозил
всю ночь не ем, весь день не сплю — устаю
Re: Отключение сериализации для некоторых свойств COM объект
От: syrompe  
Дата: 10.06.08 05:59
Оценка:
Здравствуйте, JohanTG, Вы писали:

JTG>Вопрос: как отключить сериализацию для таких свойств?

JTG>ЗЫ: для JSON-сериализации использую System.Web.Script.Serialization.JavaScriptSerializer
посмотрите на XmlIgnorAttribute и NotSerializedAttribute, если JavaScriptSerializer эти аттрибуты поддерживает, то вам повезло, иначе только ручками сериализовать.
Re[2]: Отключение сериализации для некоторых свойств COM объ
От: syrompe  
Дата: 10.06.08 06:00
Оценка: +1
Посмотрел таки хелп по JavaScriptSerializer'у:

ScriptIgnoreAttribute Class
Specifies that JavaScriptSerializer will not serialize the public property or public field. This class cannot be inherited.

Re[2]: Отключение сериализации для некоторых свойств COM объ
От: JohanTG  
Дата: 10.06.08 08:18
Оценка:
Здравствуйте, syrompe, Вы писали:

S>Здравствуйте, JohanTG, Вы писали:


JTG>>Вопрос: как отключить сериализацию для таких свойств?

JTG>>ЗЫ: для JSON-сериализации использую System.Web.Script.Serialization.JavaScriptSerializer
S>посмотрите на XmlIgnorAttribute и NotSerializedAttribute, если JavaScriptSerializer эти аттрибуты поддерживает, то вам повезло, иначе только ручками сериализовать.

В том то вся и проблема, что JavaScriptSerializer не использует атрибуты XmlIgnorAttribute и NotSerializedAttribute.
Re[3]: Отключение сериализации для некоторых свойств COM объ
От: JohanTG  
Дата: 10.06.08 08:23
Оценка:
Пока нашёл единственное преемлимое решение определить специфичный ля текущего класса конвертер (JavaScriptConverter) и натравить его на JavaScriptSerializer

serializer.RegisterConverters(new JavaScriptConverter[] { new MyJSConverter() });
Re[4]: Отключение сериализации для некоторых свойств COM объ
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.06.08 10:36
Оценка:
Здравствуйте, JohanTG, Вы писали:

JTG>Пока нашёл единственное преемлимое решение определить специфичный ля текущего класса конвертер (JavaScriptConverter) и натравить его на JavaScriptSerializer

А что, предложенный вариант не помог?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Отключение сериализации для некоторых свойств COM объ
От: syrompe  
Дата: 10.06.08 12:15
Оценка:
Здравствуйте, JohanTG, Вы писали:

JTG>Пока нашёл единственное преемлимое решение определить специфичный ля текущего класса конвертер (JavaScriptConverter) и натравить его на JavaScriptSerializer


JTG>serializer.RegisterConverters(new JavaScriptConverter[] { new MyJSConverter() });

честно говоря, так и не понял при чем тут конвертер.

Описание: Существует некий объект, держащий COM-интерфейс. Необходимо его отобразить на странице в виде JavaScript объекта (JSON-сериализация). Так как в явную такая сериализация не проходит, создаю обёртку C# класса, пронаследованного от этого интерфейса. Всё отлично, но оказалось, что некоторые свойства (Property) сериализовать не нужно.

Ну смотрите: у вас есть класс-обертка. В этом классе есть есть определенные свойства. Часть из этих свойтв в сериализации не нужна. Так пометьте их ScriptIgnoreAttribute. И все.
Может я что-то не так понимаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.