|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Имею класс: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Попытка сделать New XmlSerializer(GetType(tblCurrency)) оканчивается ошибкой из-за того, что ICollection является интерфейсом. Пытаюсь сделать так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Получаю ту же ошибку. Можно ли как-нибудь еще заставить XmlSerializer проигнорировать это свойство, не трогая класс tblCurrency (он сгенерирован EF)? А если нет, может есть альтернатива десериализации через XmlSerializer.Deserialize? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 13:14 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Antonariy, ошибка на этапе компиляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:05 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Нет, на этапе выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:26 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
AntonariyНет, на этапе выполнения. какой эксепшн? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:28 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
System.NotSupportedException Невозможно сериализовать член Test.tblCurrency.tblPrice типа System.Collections.Generic.ICollection`1[[Test.tblPrice, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], т.к. он является интерфейсом. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:33 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Попробовал добавить XmlIgnore в tblCurrency, сработало. Но это не то решение, tblCurrency изменять нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:41 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Antonariy, а почему вы атрибут не вешаете в базовом классе? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:42 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
AntonariyПопробовал добавить XmlIgnore в tblCurrency, сработало. опаздал AntonariytblCurrency изменять нельзя. тогда не наследуйся от него ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:44 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Тогда что делать-то? Мне нужно десериализовать xml в объект именно класса tblCurrency и именно с этого началась засада. Я надеялся, что наложение атрибута на overridable-свойство наследника прикроет его от XmlSerializer'а, но не взлетело. Есть еще такая штука как DataContractSerializer, может она сработает? Как ее применить? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 15:00 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
DataContractSerializer спасает, ему наплевать на интерфейсы, но в xml необходим определенный неймспейс с названием приложения: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 15:47 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Лично я предпочитаю не подвергать сериализации доменные объекты, а конвертировать их в объекты под это заточенные. В одном месте нужно сериализовать в XML, в другом в JSON, в третьем сохранить как BSON, и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 16:12 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
Antonariy, вы этот же атрибут XmlIgnore добавляете вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 16:19 |
|
Запретить сериализацию свойства
|
|||
---|---|---|---|
#18+
skyANAЛично я предпочитаю не подвергать сериализации доменные объекты, а конвертировать их в объекты под это заточенные.Фишка в том, что этот объект не был доменным во время сериализации. Это xml, который я получаю от определенного веб-сервиса, не имеющего wsdl. C помощью xsl я превращаю его в вид, соответствующий доменному, и после десериализации остается лишь сделать add/update. Однако все запросы и ответы этого сервиса описаны xsd-схемами, которыми можно не только данные валидировать, но и нагенерить из них классов, которые и есть те самые заточенные. Но их придется допиливать вручную: некоторые классы в разных схемах повторяются частично или полностью, ну и маппинг полей как-то придется делать. Обрывки единого логического узла начинают расползаться по модулям проекта как тараканы :) Либо превращаться в лапшеобразную длинноту. Поэтому лучше собрать большую ее часть в одном xsl-файле, ящетаю. Но я тем не менее щетаю, что обратную задачу, отправку xml веб-сервису, лучше таки решать через спецобъекты. netivanвы этот же атрибут XmlIgnore добавляете вручную.Да всё хорошо уже, ничего никуда больше не добавляю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 18:42 |
|
|
start [/forum/topic.php?fid=20&msg=38162256&tid=1405123]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 141ms |
0 / 0 |