Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Xmlserialisering och ärvda klasser

Postades av 2005-09-26 00:25:22 - Per Gardebrink, i forum c# (c-sharp), Tråden har 3 Kommentarer och lästs av 601 personer

Hallå!

Jag har en undran om det finns någon lösning på detta eller om jag tänker helt fel..

Jag har funderingar på att använda 3 klasser (groupcondition,wmicondition,attributecondition) som ärver en klass kallad condition

Jag skulle nu vilja kunna deserialisera så att rätt klass automatiskt väljs vid deserialisering.

ex.
<code>
<Condition type="wmi">select * from .... </Condition>
</code>
skall deserialiseras som wmiconditionklassen medan
<code>
<Condition type="group">ekonomigrupp</Condition>
</code>
skall deserialiseras som groupcondition.

Syftet jag hade var att jag ska kunna ropa på en Evaluate()-metod som returnerar true/false om villkoret uppfylls.

pseudo:
<code>
class wmicondition : condition {
[XmlTextAttribute]
public string wmiquery;
public override bool Evaluate() {
// kontrollera wmi-query och returnera status
return true;
}
}

class groupcondition : condition {
[XmlTextAttribute]
public string groupname;
public override bool Evaluate() {
// Kontrollera grupptillhörighet
return true;
}
}

class condition {
public bool Evaluate() {
}
}
</code>


När jag sen deserialiserar in xml-filen så vill jag kunna ropa på Evaluate() och då ska rätt klass testa villkoret.

Klassen där det ska användas:
<code>
class Test {

public Condition condition;

public bool test() {
// Kod för att deserialisera in xml-filen till condition-variablen
//...
return condition.Evaluate()
}

}
</code>


Svara

Sv: Xmlserialisering och ärvda klasser

Postades av 2005-09-26 10:26:07 - Jan Bulér

Jag är inte säker på att detta är rätt sätt att lösa ditt problem på men skulle det inte gå bra att skapa en conditonFactory och där skapa en statisk metod som tar din XML-sträng som en parameter. Metoden får sedan utvärdera XML-strängen och returnera en instans av rätt conditiontyp (concrete class). Sedan är det bara att köra Evaluate på den instansen.



Svara

Sv:Xmlserialisering och ärvda klasser

Postades av 2005-09-27 19:41:16 - Andreas Paulsson

Om man vill använda XmlSerializer för att avserialisera en property som kan vara en nedärvd klass så kan man lösa det problemet du har med attributet XmlInclude, se http://www.topxml.com/xmlserializer/xmlincludeattribute.asp , men det fungerar inte (tror jag) om du har ett fast och förutbestämt XML-schema som inte XmlSerializer har skapat.

Lösningen då är förmodligen som föregående inlägg säger att göra någon slags factoryklass som löser problemet med att ta beslut om vilken klass som det egentligen skall bli.

/Andreas


Svara

Sv: Xmlserialisering och ärvda klasser

Postades av 2005-10-17 22:36:46 - Per Gardebrink

Tackar för tipsen!

Jag fick iordning på serialiseringen med XmlInclude. Dock så blev det "xsi:type" istället för "type" (kosmetika iofs).

Men jag ändrade mig lite och gjorde såhär istället:

På den collection (en typad collectionbase) som jag serialiserar så anger jag följande attribut (GroupCondition, AttributeCondition och WMICondition ärver ifrån Condition och ConditionList är min "hårdtypade" collection mot Condition-klassen)

[XmlArray("Conditions")]
[XmlArrayItem("Group",typeof(GroupCondition))]
[XmlArrayItem("Attribute",typeof(AttributeCondition))]
[XmlArrayItem("WMI",typeof(WMICondition))]
public ConditionList Conditions;

Detta resulterar i en XML-fil som ser ut ungefär såhär:

<Conditions>
<WMI .... > * from win32_product where name='blaha'</WMI>
<Group ....
<Group ....
<Attribute ...
<Attribute ...
<Attribute ...
</Conditions>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 814
27 960
271 761
5 638
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies