ConfigurationElementCollection und Linq

Ich geschrieben habe, einige benutzerdefinierte Konfiguration Sammlungen, Elemente usw. Nun, ich würde gerne eine einfache Linq-Anweisung:

ServerDetails servers = ConfigurationManager.GetSection("serverDetails") as ServerDetails;
var server = from s in servers
             where s.Name == serverName
             select s;

Bekomme ich die Fehlermeldung:

Konnte nicht finden, eine Implementierung des query-pattern für die source-Typ
'MyNamespace.ServerDetails'. 'Wo' nicht gefunden.

Den ServerElement hat zwei Eigenschaften:

public class ServerElement : ConfigurationElement
{
    [ConfigurationProperty("ip")]
    public string IP
    {
        get { return (string)base["ip"]; }
        set { base["ip"] = value; }
    }

    [ConfigurationProperty("name", IsKey = true, IsRequired = true)]
    public string Name
    {
        get { return (string)base["name"]; }
        set { base["name"] = value; }
    }
}

ServerDetails

public sealed class ServerDetails : ConfigurationSection
{
    [ConfigurationProperty("ServerCollection")]
    [ConfigurationCollection(typeof(ServerCollection), AddItemName = "add")]
    public ServerCollection ServerCollection
    {
        get { return this["ServerCollection"] as ServerCollection; }
    }
}

ServerCollection

public sealed class ServerCollection : ConfigurationElementCollection
{
    public void Add(ServerElement ServerElement)
    {
        this.BaseAdd(ServerElement);
    }

    public override ConfigurationElementCollectionType CollectionType
    {
        get { return ConfigurationElementCollectionType.AddRemoveClearMap; }
    }

    protected override ConfigurationElement CreateNewElement()
    {
        return new ServerElement();
    }

    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((ServerElement)element).Name;
    }
}

Bin ich etwas fehlt? Muss ich etwas hinzufügen, so dass ich verwenden können, Linq mit einem benutzerdefinierten Konfigurations-element?

Übrigens, ich habe using System.Linq; definiert, denn ich verwende es sonst wo in der gleichen Klasse.

InformationsquelleAutor der Frage Neil Knight | 2011-12-07

Schreibe einen Kommentar