0

基本的には、複数の種類の敵をロードできるシステムを作ろうとしています。あるタイプの敵は、他のタイプよりも多くの要素を必要とします。たとえば。

XDocument doc = XDocument.Load("Levels\\Level"+ levelIndex + "\\Waves" + levelIndex + ".xml");

List<WaveInfo> waveInfo = new List<WaveInfo>();


        waveInfo = (from wave in doc.Descendants("wave")
                          select new WaveInfo()
                          {
                          enemiesInfo = (from i in wave.Descendants("enemy")
                                     select new EnemyInfo()
                                     {
                                         type = Convert.ToInt32(i.Element("type").Value),
                                         colour = Convert.ToInt32(i.Element("colour").Value),
                                         speed = (float)Convert.ToDouble(i.Element("speed").Value),
                                         spawnTime = (float)Convert.ToDouble(i.Element("spawnTime").Value),
                                     }).ToList()
                          }).ToList();

これは正常に機能し、両方のタイプの敵をロードできます。しかし、私の xml では、それを必要としない敵タイプに色要素を追加する必要があります。私が実現したいのは、1 つのタイプの敵に対してはカラー タグを書くことを気にせず、シリアライザーがそれを null 値として処理することです。これどうやってするの?

4

1 に答える 1

1

これはうまくいくはずです:

colour = i.Element("colour") != null ?
        Convert.ToInt32(i.Element("colour").Value) : 0,

または、さらに良いことに、のように明示的な operatorを使用できます。

colour = (int?)i.Element("colour") ?? 0,
于 2012-09-16T13:07:08.890 に答える