2017-06-19 4 views
0

Je veux une section de configuration qui ressemble à ceci:ConfigurationManager - Section Erreur de configuration

<MailMessage> 
    <from value="[email protected]" /> 
    <subject value ="Subject goes here" /> 
    <body value="Hello. You've got mail!" /> 
</MailMessage> 

Et je l'ai mis en œuvre les classes comme dans la deuxième réponse de ce lien: How to implement a ConfigurationSection with a ConfigurationElementCollection

Maintenant, pour moi la Les éléments de la section MailMessage ne sont pas une collection mais cela ne devrait pas poser de problème, mais je reçois l'erreur lorsque j'essaie d'accéder à la propriété:

Unrecognized element 'from' 

Je reçois la section avec le code:

private static MailMessageSection emailSection = ConfigurationManager.GetSection("MailMessage") as MailMessageSection; 

Voici la mise en œuvre des éléments:

public class MailMessageSection : ConfigurationSection 
{ 

    [ConfigurationProperty("from")] 
    public FromElement From 
    { 
      get { return base["from"] as FromElement; } 
    } 
    [ConfigurationProperty("subject")] 
    public SubjectElement Subject 
    { 
     get { return base["subject"] as SubjectElement; } 
    } 
    [ConfigurationProperty("body")] 
    public BodyElement Body 
    { 
     get { return base["body"] as BodyElement; } 
    } 

} 
public class FromElement : ConfigurationElement 
{ 
    [ConfigurationProperty("value")] 
    public string From 
    { 
     get { return base["value"] as string; } 
    } 
} 
public class SubjectElement : ConfigurationElement 
{ 

    [ConfigurationProperty("value")] 
    public string Subject 
    { 
     get { return base["value"] as string; } 
    } 
} 
public class BodyElement : ConfigurationElement 
{ 

    [ConfigurationProperty("value")] 
    public string Body 
    { 
     get { return base["value"] as string; } 
    } 
} 

Toutes les idées ce qui pourrait être mal? Merci pour votre temps!

Répondre

1

Si vous recherchez une erreur, les classes sérialisables peuvent être frustrantes. Je vous suggère d'utiliser les fonctionnalités de génération automatique dans VisualStudio. Voici comment vous le faites (très simple):
1. Copiez le exemple XML (le presse-papiers)
2. Créer nouvelle classe pour le XML (« MailMessageSection » dans votre cas)
3. VS aller Edit>Paste Special>Paste XML As Classes

je sais que ce n'est pas exactement la raison pour laquelle le de ne fonctionne pas, mais en utilisant le code généré automatiquement est beaucoup mieux pratique alors écrire sur votre propre.

Espérons que ça aide ...