01. september 2009 - 15:10Der er
6 kommentarer og 1 løsning
arv og xml serialisering
Hejsa
Jeg vil kunne læse et NetworkCredential fra en xml fil og tænkte jeg ville bruge Xml serialisering. Jeg har en klasse, Credential, der arver fra NetworkCredential og hvor jeg har specificeret attributterne som XmlAttributes (bemærk 'new')
[XmlRoot] public class Credentials : NetworkCredential { private string _domain; private string _username; private string _password;
[XmlAttribute] public new string Domain { get { return _domain; } set { _domain = value; } }
[XmlAttribute] public new string UserName { get { return _username; } set { _username = value; } }
[XmlAttribute] public new string Password { get { return _password; } set { _password = value; } } }
men ved deserialisering får jeg følgende: {"Member 'Credentials.Domain' hides inherited member 'NetworkCredential.Domain', but has different custom attributes."}
Jeg vil tro at du skal vaelge en af: - undlade at arve fra NetworkCredential men evt. implementere ICredentials - droppe dine 3 fields og lade dine properties override NetworkCredential's og kalde dens properties
Det er noget rod at du har 2 domain, 2 username og 2 password i dine objekter.
Credentials.Domain.get': cannot override inherited member 'System.Net.NetworkCredential.Domain.get' because it is not marked virtual, abstract, or override
Det er fordi Domain ikke er virtual. Så nej - du kan ikke override den. Jeg synes også det er noget rod at arve fra NetworkCredential. Implementer i stedet ICredentials eller find en anden måde at serialisere NetworkCredentials på.
Lav evt. to utility-metoder som serialiserer og deserialiserer manuelt vha. en XmlWriter eller et XmlDocument. Det er trods alt ikke alverden af properties der skal serialiseres.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.