Ceci n'est pas un doublon de ce question. Je dois sérialiser la propriété qui est "ReadOnly". Je ne peux rien faire sur cette classe, parce que c'est la classe System.Web.Security.MembershipUser
, bien sûr ce n'est pas une classe scellée.Sérialisation de données de membre en lecture seule
[WebGet]
public string GetAllUsers()
{
List<MembershipUser> membershipList = new List<MembershipUser>();
MembershipUserCollection userCollection = Membership.GetAllUsers();
foreach (MembershipUser user in userCollection)
membershipList.Add(user);
string memberCollection = SerializeToString(membershipList, typeof(List<MembershipUser>));
List<MembershipUser> users = Deserialize(memberCollection, typeof(List<MembershipUser>)) as List<MembershipUser>;
return memberCollection;
}
code ci-dessus est ce que je,
MembershipUserCollection userCollection = Membership.GetAllUsers();
GetAllUsers
méthode retourne MembershipUserCollection
, mais cela n'a pas accesseur par défaut. Donc, tout en sérialisant, je reçois une exception. C'est la raison pour laquelle je suis allé avec List<MembershipUser>
. Ici aussi, je suis confronté à des problèmes. C'est manger ma journée, qu'est-ce qui pourrait résoudre ça?
Éditer: J'utilise XmlSerializer.
Dépend du sérialiseur - le DataContractSerializer de WCF va heureusement sérialiser les membres privés, à condition de leur attribuer un attribut [DataMember] ..... –
True; Je pensais au Xml Serializer. La question n'a pas précisé lequel est utilisé, pourrait être une information utile. –
Vous pouvez définir le sérialiseur, je ne savais pas à ce sujet, il peut être DataContractSerializer ou non, Si cela peut, peut-être C'est une solution, mais vous pouvez également écrire votre propre sérialiseur, qui peut accéder aux champs privés, mais en premier devrait vérifier ceux sont des champs privés ou seront créés avec d'autres données. –