Právě je neděle 05. září 2010, 07:24

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 
Autor Zpráva
 Předmět příspěvku: Serializacia tried implementujucich rozhranie IEnumerable
OdeslatNapsal: čtvrtek 07. leden 2010, 12:07 
Offline
Jednohubka
Jednohubka

Registrován: pondělí 28. prosinec 2009, 13:46
Příspěvky: 2
Ahojte,

mam takyto problem. Vo svojom programe pouzivam hierarchicku strukturu tried, ktoru po ukonceni programu zapisem do konfiguracneho suboru aplikacie vo formate xml. Po opatovnom spusteni aplikacie tieto udaje deserializujem a vo vhodnej forme prezentujem pouzivatelovi. V priebehu vyvoja programu som zistil, ze je pre mna vyhodne pre jednu z tychto tried implementovat rozhranie IEnumerable, aby som ju mohol pouzit v prikaze foreach. Zial trieda XmlSerializer je napisana tak, ze s objektami implementujucimi jedno z rozhrani IEnumerable a ICollection zachadza specialnym sposobom. Konkretne v mojom pripade to znamena, ze by som do mojej triedy musel pridat funkciu Add. To nevidim ako velky problem, zial ked som tak urobil, program zacal vyhadzovat nezmyselnu vynimku:

"Unable to generate a temporary class (result=1).
error CS1026: ) expected
error CS1002: ; expected
error CS1525: Invalid expression term ')'
error CS1002: ; expected
error CS1525: Invalid expression term ')'"

Podotykam, ze pred implementaciou rozhrania IEnumerable bolo vsetko v poriadku. Navyse aj keby sa neobjavila hore uvedena vynimka, XmlSerializer by serializoval/deserializoval len cleny kolekcie teda by ignoroval dalsie verejne vlastnosti mojej triedy s cim nie som spokojny. Neda sa pomocou nejakeho specialneho atributu vypnut zvlastne zaobchadzanie s mojou triedou tak aby ju XmlSerializer chapal ako vseobecnu triedu?


Nahoru
 Profil E-mail  
 
 Předmět příspěvku: Re: Serializacia tried implementujucich rozhranie IEnumerable
OdeslatNapsal: čtvrtek 07. leden 2010, 12:29 
Offline
Jednohubka
Jednohubka

Registrován: pondělí 28. prosinec 2009, 13:46
Příspěvky: 2
Podarilo sa mi obist problem tym sposobom, ze som ponechal implementaciu rozhrania IEnumerable, ale formalne som v zozname predkov vymazal odkaz na IEnumerable. Prikaz foreach je natolko chytry, ze s tym poradi. Nasiel som to v dokumentacii MSDN. Uvadzam skrateny vypis zdrojovych kodov:

public partial class configurationFeeds : IConfigurationSection //, IEnumerable
{
...
public IEnumerator GetEnumerator() { return new FeedEnumerator(this); }
}

public class FeedEnumerator : IEnumerator
{
int index;
configurationFeeds feedList;

public FeedEnumerator(configurationFeeds feedList)
{
this.feedList = feedList;
index = -1;
}

public void Reset()
{
index = -1;
}

public bool MoveNext()
{
index++;
if(index > (feedList.Feeds.Count - 1))
return false;
else return true;
}

public object Current
{
get { return feedList.Feeds[index]; }
}
}

...
foreach (configurationFeedsFeed feed in feedList)
{
...
}


Nahoru
 Profil E-mail  
 
 Předmět příspěvku: Re: Serializacia tried implementujucich rozhranie IEnumerable
OdeslatNapsal: čtvrtek 07. leden 2010, 12:50 
Offline
Pokročilý
Pokročilý
Uživatelský avatar

Registrován: sobota 09. únor 2008, 20:53
Příspěvky: 482
Bydliště: Olomouc
Super, ze jsi to vyresil. Muzes jeste prosim napsat, jakou verzi frameworku pouzivas?

P.S.: Nevím, jestli je to stejný případ, ale na CodeProjectu jsem nasel nejaky CustomXmlSerializer, ktery resi serializaci spousty typu definovanych v System.Collections.

_________________
http://www.dotnetcesky.blogspot.com - C#, kde knihy nestačí.


Nahoru
 Profil E-mail  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přeskočit na:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Český překlad – phpBB.cz

Google Pagerank - www.dotnetforum.czGoogle Pagerank S-Rank - www.dotnetforum.czS-Rank JyxoRank - www.dotnetforum.czJyxoRank


Valid XHTML 1.0 Transitional