Использование библиотеки классов 2.0 от Silverlight WCF Service, публичные свойства остаются неэкспонированными

StackOverflow https://stackoverflow.com/questions/1396576

  •  22-09-2019
  •  | 
  •  

Вопрос

Вот немного тонкой проблемы, с которой я имею дело, и я бы признателен за любую помощь.

У нас есть наш проект в режиме производства, построенный с .NET 2.0. Недавно мы разработали приложение Silverlight, внешнее по отношению к решению 2.0, и оно «говорит» с службой WCF. Эта услуга потребляет DLL, которые мы копируем из нашего решения 2.0, чтобы опубликовать папки, чтобы получить доступ к функциональности из нашего исходного решения.

Служба WCF разоблачает несколько методов и объектов, происходящих из нашего решения 2.0. Очевидно, что он использует [DataContract] S и [DataMember] S внутри, и они недоступны в нашем исходном решении (поскольку это .NET 2.0, и на этой точке обновление до 3.5 не является вариантом). К счастью, WCF может относиться к нашим сериализуемым объектам так, как если бы они были определены как контракты, но по какой -то странной причине только переменные члена (даже если они определены как частные!), Сериализуются; Свойства, даже урегулируемые и публичные никогда не являются сериализованными.

Наши объектные классы, которые нам нужны, были определены на них serializable ()]. Я оглянулся и не смог найти хорошее решение / объяснение этого. Вероятно, это связано с тем, как .NET 3.0/3.5 является «видом» объектами My 2.0 (он предполагает [DataMember] только по переменным и никогда не на свойствах).

Мой вопрос в том, как разоблачить только общественные свойства, и никогда не частные переменные?

Заранее спасибо за это понимание этого.

Итамар.

Это было полезно?

Решение

Причина этого остается неизвестной. Мы обошли эту проблему, выходя из обнаженного объекта (находящегося в скомпилированных DLL, которые мы используем через проект WCF), а затем воссоздавая свойства и вспомогательные функции, которые нам нужны. Мы также добавляем новые свойства или переменные члена, где это необходимо. Затем мы используем этот новый объект внутренне (иногда требуется иметь специализированный конструктор, чтобы сделать некоторые копии или корректировки). Не идеально, но работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top