Возвращение пользовательских данных WCF - PullRequest
0 голосов
/ 04 августа 2011

Я новичок в WCF и ищу несколько советов по конкретной проблеме. Я использую Enitity Framework и хочу вернуть мои сущности в формате JSON через WCF. Однако я только хочу вернуть определенную информацию при определенных обстоятельствах. Например, в одном методе я мог бы хотеть вернуть имя пользователя пользователя вместе с его идентификатором пользователя, в другом случае я хочу вернуть имя пользователя, идентификатор пользователя и номер телефона пользователя. Сначала я подумал, что, возможно, смогу вернуть анонимный тип, такой как

var obj = new { username = user.UserName, userid = user.UserId };

Но после исследования я обнаружил, что это не очень хорошая идея. Затем я подумал о возврате словаря ключевых значений, проблема с этим подходом заключается в том, что возвращается JSON:

{"key":"username","Value":"Andrew"}

Я стремлюсь к чему-то вроде

{"username":"Andrew"}

У меня также есть свои собственные типы. Есть ли способ исключить свойства? Т.е. если у моего типа есть свойство Телефон, смогу ли я исключить его при определенных обстоятельствах?

Любая помощь / предложения высоко ценится

1 Ответ

0 голосов
/ 04 августа 2011

Я знаю, что в DataContractSerializer вы можете использовать EmitDefaultValue , например, вы можете иметь контракт с именем UserInfo


     [DataContract]
     public class UserInfo
     {
         [DataMember]
         public string UserID { get; set; }

         [DataMember]
         public string UserName { get; set; }

         [DataMember(EmitDefaultValue=false)]
         public int Age { get; set; }

         [DataMember(EmitDefaultValue=false)] 
         public DateTime Time { get; set; }
     }



Я не знаю, поддерживается ли EmitDefaultValue сериализатором JSON, вы можете попробовать его самостоятельно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...