Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Trap for missing XElement
Message
De
27/11/2008 18:14:55
 
 
À
27/11/2008 14:29:38
Information générale
Forum:
ASP.NET
Catégorie:
Autre
Versions des environnements
Environment:
C# 3.0
Divers
Thread ID:
01364420
Message ID:
01364441
Vues:
10
Hi Viv,

Did you figure it out yet? I just started playing with your example, plugging stuff into the Immediate Window and found a solution for you. Check the Count to see if it's 0 or not in your get:
public string Customer
{
    get 
    {
        if (((IEnumerable<XElement>)content.Descendants("Customer")).Count<XElement>() == 0)
            return "";
        else
            return content.Descendants("Customer").Single().Value; 
    }
    set { content.Descendants("Customer").Single().Value = value; }
}
~~Bonnie





>Hi,
>
>I'm using classes that encapsulate an XElement via a bunch of properties. Here's a simple,fictitious example:
>    public class Order
>    {
>        private XElement content = new XElement("Order",
>            new XElement("ID"),
>            new XElement("Customer")
>            );
>
>        public XElement XMLContent
>        {
>            get { return content; }
>            set { content = XMLContent; }
>        }
>
>        public string ID
>        {
>            get { return content.Descendants("ID").Single().Value; }
>            set { content.Descendants("ID").Single().Value = value; }
>        }
>
>        public string Customer
>        {
>            get { return content.Descendants("Customer").Single().Value; }
>            set { content.Descendants("Customer").Single().Value = value; }
>        }
>    }
>This works fine until I set the XMLContent to (again a fictitious example - but assume that it is a valid thing to do) an XElement that does not contain a 'Customer' element. In this situation I'd like the Customer property to return an empty string. If I inspect the Customer property in the debugger it shows an exception - but I can't seem to trap for this situation anywhere (I was thinking I could do this in the Customer accessor....)
>
>Any suggestions,
>TIA,
>Viv
Bonnie Berent DeWitt
NET/C# MVP since 2003

http://geek-goddess-bonnie.blogspot.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform