Błąd przy serializacji

Błąd przy serializacji
AL
  • Rejestracja:ponad 11 lat
  • Ostatnio:16 dni
  • Postów:308
0
Kopiuj
There was an error reflecting type 'System.Collections.Generic.List

Przykładowy wygląd klas: Serializuje obiekt List<AA>

Kopiuj
    [Serializable]
    [XmlRoot("")]
    public class AA
    {
        public AA()
        {
        }

        [XmlAttribute("Name")]
        public string Name { get; set; }

        [XmlArray("arr")]
        [XmlArrayItem("arritem", typeof(xx))]
        public List<xx> xxlist = new List<xx>();
    }

    [Serializable]
    [XmlRoot("xx")]
    public class xx
    {
        public xx()
        {
        }

        [XmlElement("myenum")]
        public MyEnum enum= MyEnum.None;

        [XmlElement("1")]
        public long 1{ get; set; }

        [XmlElement("2")]
        public DateTime 2= DateTime.Now;

I teraz najciekawsze. Na większości komputerów wszystko działa, błąd mam na mojej wirtualnej maszynie z XP i jednym komputerze w7. Kombinowałem, żeby np zamiast get; set; przypisać już jakieś wartości (jak w kodzie wyżej) ale nic to nie dało. Serializuje tą samą metodą też inne klasy, które są podobnie zbudowane i tam wszystko działa na wszystkich komputerach. Co może być przyczyną, jakiś bug w Framoworku?

gr0m
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:21
0

Pokaż co masz w InnerException

AL
  • Rejestracja:ponad 11 lat
  • Ostatnio:16 dni
  • Postów:308
0
Kopiuj
There was an error reflecting type 'AA' //z pierwszego posta

at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter)
at System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace, RecursionLimiter limiter)
at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
[..]
T2
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • Postów:194
0

Dlaczego [XmlRoot("")] dla AA jest pusty ?
jeżeli serializujesz pojedyńczo XX wszystko jest ok ?

public List<xx> xxlist = new List<xx>();

zamień to na property

Kopiuj
 
  private  List<xx>_xxlist = new List<xx>();
  public List<xx> xxlist 
 {
 get {..}
 set {..}
 }
edytowany 4x, ostatnio: teo215
AL
  • Rejestracja:ponad 11 lat
  • Ostatnio:16 dni
  • Postów:308
0

tu z palca pisałem, jako przykład, nie będę wklejał kodu programu..

Problem jest taki, że wszystko działa tak jak ma działać, a wywala się tylko jednej osobie. (I mi na wirtualnej maszynie- XP)
na tym XP nie mam visuala, nie mam jak debugować. Nie mam jak wywołać tego błędu u siebie na systemie z visualem.

Mam też drugą inną podobną klasę- podobnie zbudowana i tam działa u wszystkich.

Nie wiem czy to jakiś błąd w .NET ale już nie wiem co nie tak..

AL
Już sobie rozwiązałem problem
T2
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • Postów:194
0

jakiej wersji .NET używasz w aplikacji?

Zobacz pozostały 1 komentarz
T2
http://stackoverflow.com/questions/4204194/is-net-4-0-compatible-with-windows-xp-sp2-or-below jaka wersja windowsa XP ? Dla precyzji wywala się tylko na tych dwóch XP czy na wszystkich XP ?
AL
XP SP3 net od 2.0 do 4.0, drugi system to w7. Ja też mam w7 i wszystko działa. Wywala się tylko jednej osobie na 7 i mi na wirtualnym XP. Sprawdzę na starym PC- mam tam XP jeszcze.
AL
też nie działa na tym PC z XP..
T2
Czyli można przyjąć że wszędzie się wywala tylko nie u Ciebie ?:p Chyba bez pokazania kodu się nie obejdzie :D
AL
Można przyjąć, że wszędzie na XP, i na prawdopodobnie nieaktualizowanym 7 (jeden przypadek). Czyli będę kombinował dalej.. ewentualnie zamiast serializacji wczytam to inaczej..
0
.Al napisał(a):

tu z palca pisałem, jako przykład, nie będę wklejał kodu programu..

Problem jest taki, że wszystko działa tak jak ma działać, a wywala się tylko jednej osobie. (I mi na wirtualnej maszynie- XP)
na tym XP nie mam visuala, nie mam jak debugować. Nie mam jak wywołać tego błędu u siebie na systemie z visualem.

Mam też drugą inną podobną klasę- podobnie zbudowana i tam działa u wszystkich.

Nie wiem czy to jakiś błąd w .NET ale już nie wiem co nie tak..

jak sobie rozwiązałeś problem to napisz co było nie tak..

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)