ConfigurationElement Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje konfigurační prvek v konfiguračním souboru.
public ref class ConfigurationElement abstract
public abstract class ConfigurationElement
type ConfigurationElement = class
Public MustInherit Class ConfigurationElement
- Dědičnost
-
ConfigurationElement
- Odvozené
Příklady
Následující příklad kódu ukazuje, jak implementovat vlastní ConfigurationElement jako jednotlivý prvek ve vlastním oddílu a jako kolekci elementů ve vlastním oddílu. Příklad se skládá z následujících souborů:
Soubor app.config, který obsahuje vlastní oddíl s názvem
MyUrls
. Tento oddíl obsahuje jednoduchý element (neobsahuje žádné další prvky) a kolekci elementů. Jednoduchý element má názevsimple
a kolekce má názevurls
.Konzolová aplikace. Aplikace přečte obsah souboru app.config a zapíše informace do konzoly nástroje . Používá třídy, které jsou odvozeny z ConfigurationElement, ConfigurationElementCollectiona ConfigurationSection.
Třída s názvem
UrlsSection
, která je odvozena ConfigurationSection z třídy. Tato třída se používá pro přístup k oddíluMyUrls
v konfiguračním souboru.Třída s názvem
UrlsCollection
, která je odvozena ConfigurationElementCollection z třídy. Tato třída se používá pro přístup ke kolekciurls
v konfiguračním souboru.Třída s názvem
UrlConfigElement
, která je odvozena ConfigurationElement z třídy. Tato třída se používá pro přístup k elementusimple
a členůmurls
kolekce v konfiguračním souboru.
Pokud chcete spustit příklad, proveďte následující kroky:
Vytvořte řešení, které má projekt konzolové aplikace a projekt knihovny tříd s názvem
ConfigurationElement
.Vložte tři soubory tříd do projektu knihovny tříd a ostatní soubory vložte do projektu knihovny konzoly.
V obou projektech nastavte odkaz na
System.Configuration
.V projektu konzolové aplikace nastavte odkaz na projekt knihovny tříd.
// Set Assembly name to ConfigurationElement
using System;
using System.Configuration;
using System.Collections;
namespace Samples.AspNet
{
// Entry point for console application that reads the
// app.config file and writes to the console the
// URLs in the custom section.
class TestConfigurationElement
{
static void Main(string[] args)
{
// Get current configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
// Get the MyUrls section.
UrlsSection myUrlsSection =
config.GetSection("MyUrls") as UrlsSection;
if (myUrlsSection == null)
{
Console.WriteLine("Failed to load UrlsSection.");
}
else
{
Console.WriteLine("The 'simple' element of app.config:");
Console.WriteLine(" Name={0} URL={1} Port={2}",
myUrlsSection.Simple.Name,
myUrlsSection.Simple.Url,
myUrlsSection.Simple.Port);
Console.WriteLine("The urls collection of app.config:");
for (int i = 0; i < myUrlsSection.Urls.Count; i++)
{
Console.WriteLine(" Name={0} URL={1} Port={2}",
myUrlsSection.Urls[i].Name,
myUrlsSection.Urls[i].Url,
myUrlsSection.Urls[i].Port);
}
}
Console.ReadLine();
}
}
}
' Set Assembly name to ConfigurationElement
' and set Root namespace to Samples.AspNet
Imports System.Configuration
Imports System.Collections
Class TestConfigurationElement
' Entry point for console application that reads the
' app.config file and writes to the console the
' URLs in the custom section.
Shared Sub Main(ByVal args() As String)
' Get the current configuration file.
Dim config As System.Configuration.Configuration = _
ConfigurationManager.OpenExeConfiguration( _
ConfigurationUserLevel.None)
' Get the MyUrls section.
Dim myUrlsSection As UrlsSection = _
config.GetSection("MyUrls")
If myUrlsSection Is Nothing Then
Console.WriteLine("Failed to load UrlsSection.")
Else
Console.WriteLine("The 'simple' element of app.config:")
Console.WriteLine(" Name={0} URL={1} Port={2}", _
myUrlsSection.Simple.Name, _
myUrlsSection.Simple.Url, _
myUrlsSection.Simple.Port)
Console.WriteLine("The urls collection of app.config:")
Dim i As Integer
For i = 0 To myUrlsSection.Urls.Count - 1
Console.WriteLine(" Name={0} URL={1} Port={2}", _
i, myUrlsSection.Urls(i).Name, _
myUrlsSection.Urls(i).Url, _
myUrlsSection.Urls(i).Port)
Next i
End If
Console.ReadLine()
End Sub
End Class
using System;
using System.Configuration;
using System.Collections;
namespace Samples.AspNet
{
// Define a custom section containing an individual
// element and a collection of elements.
public class UrlsSection : ConfigurationSection
{
[ConfigurationProperty("name",
DefaultValue = "MyFavorites",
IsRequired = true,
IsKey = false)]
[StringValidator(InvalidCharacters =
" ~!@#$%^&*()[]{}/;'\"|\\",
MinLength = 1, MaxLength = 60)]
public string Name
{
get
{
return (string)this["name"];
}
set
{
this["name"] = value;
}
}
// Declare an element (not in a collection) of the type
// UrlConfigElement. In the configuration
// file it corresponds to <simple .... />.
[ConfigurationProperty("simple")]
public UrlConfigElement Simple
{
get
{
UrlConfigElement url =
(UrlConfigElement)base["simple"];
return url;
}
}
// Declare a collection element represented
// in the configuration file by the sub-section
// <urls> <add .../> </urls>
// Note: the "IsDefaultCollection = false"
// instructs the .NET Framework to build a nested
// section like <urls> ...</urls>.
[ConfigurationProperty("urls",
IsDefaultCollection = false)]
public UrlsCollection Urls
{
get
{
UrlsCollection urlsCollection =
(UrlsCollection)base["urls"];
return urlsCollection;
}
}
protected override void DeserializeSection(
System.Xml.XmlReader reader)
{
base.DeserializeSection(reader);
// You can add custom processing code here.
}
protected override string SerializeSection(
ConfigurationElement parentElement,
string name, ConfigurationSaveMode saveMode)
{
string s =
base.SerializeSection(parentElement,
name, saveMode);
// You can add custom processing code here.
return s;
}
}
}
Imports System.Configuration
Imports System.Collections
' Define a custom section containing an individual
' element and a collection of elements.
Public Class UrlsSection
Inherits ConfigurationSection
<ConfigurationProperty("name", _
DefaultValue:="MyFavorites", _
IsRequired:=True, _
IsKey:=False), _
StringValidator( _
InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
MinLength:=1, MaxLength:=60)> _
Public Property Name() As String
Get
Return CStr(Me("name"))
End Get
Set(ByVal value As String)
Me("name") = value
End Set
End Property
' Declare an element (not in a collection) of the type
' UrlConfigElement. In the configuration
' file it corresponds to <simple .... />.
<ConfigurationProperty("simple")> _
Public ReadOnly Property Simple() _
As UrlConfigElement
Get
Dim url As UrlConfigElement = _
CType(Me("simple"), _
UrlConfigElement)
Return url
End Get
End Property
' Declare a collection element represented
' in the configuration file by the sub-section
' <urls> <add .../> </urls>
' Note: the "IsDefaultCollection = false"
' instructs the .NET Framework to build a nested
' section like <urls> ...</urls>.
<ConfigurationProperty("urls", _
IsDefaultCollection:=False)> _
Public ReadOnly Property Urls() _
As UrlsCollection
Get
Dim urlsCollection _
As UrlsCollection = _
CType(Me("urls"), UrlsCollection)
Return urlsCollection
End Get
End Property
Protected Overrides Sub DeserializeSection( _
ByVal reader As System.Xml.XmlReader)
MyBase.DeserializeSection(reader)
' Enter your custom processing code here.
End Sub
Protected Overrides Function SerializeSection( _
ByVal parentElement As ConfigurationElement, _
ByVal name As String, _
ByVal saveMode As ConfigurationSaveMode) As String
Dim s As String = _
MyBase.SerializeSection(parentElement, _
name, saveMode)
' Enter your custom processing code here.
Return s
End Function 'SerializeSection
End Class
using System;
using System.Configuration;
using System.Collections;
namespace Samples.AspNet
{
public class UrlsCollection : ConfigurationElementCollection
{
public UrlsCollection()
{
// Add one url to the collection. This is
// not necessary; could leave the collection
// empty until items are added to it outside
// the constructor.
UrlConfigElement url =
(UrlConfigElement)CreateNewElement();
Add(url);
}
public override
ConfigurationElementCollectionType CollectionType
{
get
{
return
ConfigurationElementCollectionType.AddRemoveClearMap;
}
}
protected override
ConfigurationElement CreateNewElement()
{
return new UrlConfigElement();
}
protected override
ConfigurationElement CreateNewElement(
string elementName)
{
return new UrlConfigElement(elementName);
}
protected override Object
GetElementKey(ConfigurationElement element)
{
return ((UrlConfigElement)element).Name;
}
public new string AddElementName
{
get
{ return base.AddElementName; }
set
{ base.AddElementName = value; }
}
public new string ClearElementName
{
get
{ return base.ClearElementName; }
set
{ base.ClearElementName = value; }
}
public new string RemoveElementName
{
get
{ return base.RemoveElementName; }
}
public new int Count
{
get { return base.Count; }
}
public UrlConfigElement this[int index]
{
get
{
return (UrlConfigElement)BaseGet(index);
}
set
{
if (BaseGet(index) != null)
{
BaseRemoveAt(index);
}
BaseAdd(index, value);
}
}
new public UrlConfigElement this[string Name]
{
get
{
return (UrlConfigElement)BaseGet(Name);
}
}
public int IndexOf(UrlConfigElement url)
{
return BaseIndexOf(url);
}
public void Add(UrlConfigElement url)
{
BaseAdd(url);
// Add custom code here.
}
protected override void
BaseAdd(ConfigurationElement element)
{
BaseAdd(element, false);
// Add custom code here.
}
public void Remove(UrlConfigElement url)
{
if (BaseIndexOf(url) >= 0)
BaseRemove(url.Name);
}
public void RemoveAt(int index)
{
BaseRemoveAt(index);
}
public void Remove(string name)
{
BaseRemove(name);
}
public void Clear()
{
BaseClear();
// Add custom code here.
}
}
}
Imports System.Configuration
Imports System.Collections
Public Class UrlsCollection
Inherits ConfigurationElementCollection
Public Sub New()
' Add one url to the collection. This is
' not necessary; could leave the collection
' empty until items are added to it outside
' the constructor.
Dim url As UrlConfigElement = _
CType(CreateNewElement(), UrlConfigElement)
' Add the element to the collection.
Add(url)
End Sub
Public Overrides ReadOnly Property CollectionType() _
As ConfigurationElementCollectionType
Get
Return ConfigurationElementCollectionType.AddRemoveClearMap
End Get
End Property
Protected Overloads Overrides Function CreateNewElement() _
As ConfigurationElement
Return New UrlConfigElement()
End Function 'CreateNewElement
Protected Overloads Overrides Function CreateNewElement( _
ByVal elementName As String) _
As ConfigurationElement
Return New UrlConfigElement(elementName)
End Function 'CreateNewElement
Protected Overrides Function GetElementKey( _
ByVal element As ConfigurationElement) As [Object]
Return CType(element, UrlConfigElement).Name
End Function 'GetElementKey
Public Shadows Property AddElementName() As String
Get
Return MyBase.AddElementName
End Get
Set(ByVal value As String)
MyBase.AddElementName = value
End Set
End Property
Public Shadows Property ClearElementName() As String
Get
Return MyBase.ClearElementName
End Get
Set(ByVal value As String)
MyBase.ClearElementName = value
End Set
End Property
Public Shadows ReadOnly Property RemoveElementName() As String
Get
Return MyBase.RemoveElementName
End Get
End Property
Public Shadows ReadOnly Property Count() As Integer
Get
Return MyBase.Count
End Get
End Property
Default Public Shadows Property Item( _
ByVal index As Integer) As UrlConfigElement
Get
Return CType(BaseGet(index), UrlConfigElement)
End Get
Set(ByVal value As UrlConfigElement)
If Not (BaseGet(index) Is Nothing) Then
BaseRemoveAt(index)
End If
BaseAdd(index, value)
End Set
End Property
Default Public Shadows ReadOnly Property Item( _
ByVal Name As String) As UrlConfigElement
Get
Return CType(BaseGet(Name), UrlConfigElement)
End Get
End Property
Public Function IndexOf( _
ByVal url As UrlConfigElement) As Integer
Return BaseIndexOf(url)
End Function 'IndexOf
Public Sub Add(ByVal url As UrlConfigElement)
BaseAdd(url)
' Add custom code here.
End Sub
Protected Overrides Sub BaseAdd( _
ByVal element As ConfigurationElement)
BaseAdd(element, False)
' Add custom code here.
End Sub
Public Overloads Sub Remove( _
ByVal url As UrlConfigElement)
If BaseIndexOf(url) >= 0 Then
BaseRemove(url.Name)
End If
End Sub
Public Sub RemoveAt(ByVal index As Integer)
BaseRemoveAt(index)
End Sub
Public Overloads Sub Remove(ByVal name As String)
BaseRemove(name)
End Sub
Public Sub Clear()
BaseClear()
End Sub
End Class
using System;
using System.Configuration;
using System.Collections;
namespace Samples.AspNet
{
public class UrlConfigElement : ConfigurationElement
{
// Constructor allowing name, url, and port to be specified.
public UrlConfigElement(String newName,
String newUrl, int newPort)
{
Name = newName;
Url = newUrl;
Port = newPort;
}
// Default constructor, will use default values as defined
// below.
public UrlConfigElement()
{
}
// Constructor allowing name to be specified, will take the
// default values for url and port.
public UrlConfigElement(string elementName)
{
Name = elementName;
}
[ConfigurationProperty("name",
DefaultValue = "Microsoft",
IsRequired = true,
IsKey = true)]
public string Name
{
get
{
return (string)this["name"];
}
set
{
this["name"] = value;
}
}
[ConfigurationProperty("url",
DefaultValue = "http://www.microsoft.com",
IsRequired = true)]
[RegexStringValidator(@"\w+:\/\/[\w.]+\S*")]
public string Url
{
get
{
return (string)this["url"];
}
set
{
this["url"] = value;
}
}
[ConfigurationProperty("port",
DefaultValue = (int)0,
IsRequired = false)]
[IntegerValidator(MinValue = 0,
MaxValue = 8080, ExcludeRange = false)]
public int Port
{
get
{
return (int)this["port"];
}
set
{
this["port"] = value;
}
}
protected override void DeserializeElement(
System.Xml.XmlReader reader,
bool serializeCollectionKey)
{
base.DeserializeElement(reader,
serializeCollectionKey);
// You can your custom processing code here.
}
protected override bool SerializeElement(
System.Xml.XmlWriter writer,
bool serializeCollectionKey)
{
bool ret = base.SerializeElement(writer,
serializeCollectionKey);
// You can enter your custom processing code here.
return ret;
}
protected override bool IsModified()
{
bool ret = base.IsModified();
// You can enter your custom processing code here.
return ret;
}
}
}
Imports System.Configuration
Imports System.Collections
Public Class UrlConfigElement
Inherits ConfigurationElement
' Constructor allowing name, url, and port to be specified.
Public Sub New(ByVal newName As String, _
ByVal newUrl As String, _
ByVal newPort As Integer)
Name = newName
Url = newUrl
Port = newPort
End Sub
' Default constructor, will use default values as defined
Public Sub New()
End Sub
' Constructor allowing name to be specified, will take the
' default values for url and port.
Public Sub New(ByVal elementName As String)
Name = elementName
End Sub
<ConfigurationProperty("name", _
DefaultValue:="Microsoft", _
IsRequired:=True, _
IsKey:=True)> _
Public Property Name() As String
Get
Return CStr(Me("name"))
End Get
Set(ByVal value As String)
Me("name") = value
End Set
End Property
<ConfigurationProperty("url", _
DefaultValue:="http://www.microsoft.com", _
IsRequired:=True), _
RegexStringValidator("\w+:\/\/[\w.]+\S*")> _
Public Property Url() As String
Get
Return CStr(Me("url"))
End Get
Set(ByVal value As String)
Me("url") = value
End Set
End Property
<ConfigurationProperty("port", _
DefaultValue:=0, _
IsRequired:=False), _
IntegerValidator(MinValue:=0, _
MaxValue:=8080, ExcludeRange:=False)> _
Public Property Port() As Integer
Get
Return Fix(Me("port"))
End Get
Set(ByVal value As Integer)
Me("port") = value
End Set
End Property
Protected Overrides Sub DeserializeElement(ByVal reader _
As System.Xml.XmlReader, _
ByVal serializeCollectionKey As Boolean)
MyBase.DeserializeElement(reader, _
serializeCollectionKey)
' Enter your custom processing code here.
End Sub
Protected Overrides Function SerializeElement(ByVal writer _
As System.Xml.XmlWriter, _
ByVal serializeCollectionKey As Boolean) As Boolean
Dim ret As Boolean = _
MyBase.SerializeElement(writer, serializeCollectionKey)
' Enter your custom processing code here.
Return ret
End Function 'SerializeElement
Protected Overrides Function IsModified() As Boolean
Dim ret As Boolean = MyBase.IsModified()
' Enter your custom processing code here.
Return ret
End Function 'IsModified
End Class
Poznámky
The ConfigurationElement je abstraktní třída, která se používá k reprezentaci elementu XML v konfiguračním souboru (například Web.config). Prvek v konfiguračním souboru může obsahovat nula, jeden nebo více podřízených elementů.
Vzhledem k tomu, že ConfigurationElement třída je definována jako abstraktní, nemůžete vytvořit jeho instanci. Můžete z něj odvodit pouze třídy. Rozhraní .NET Framework obsahuje třídy, které jsou odvozeny z ConfigurationElement třídy, aby představovaly standardní elementy konfigurace XML, například ConfigurationSection. Třídu můžete také rozšířit o ConfigurationElement přístup k vlastním prvkům a oddílům konfigurace. Příklad uvedený dále v tomto tématu ukazuje, jak získat přístup k vlastním prvkům a oddílům konfigurace pomocí vlastních tříd odvozených z ConfigurationElement.
Můžete také rozšířit standardní typy konfigurace, jako ConfigurationElementjsou , ConfigurationElementCollectionConfigurationProperty, a ConfigurationSection. Další informace najdete v dokumentaci k těmto třídám.
Další informace o tom, jak získat přístup k informacím v konfiguračních souborech, najdete v ConfigurationManager tématu třída a WebConfigurationManager třída.
Poznámky pro implementátory
Každý ConfigurationElement objekt vytvoří interní ConfigurationPropertyCollection kolekci ConfigurationProperty objektů, která představuje buď atributy elementu, nebo kolekci podřízených elementů.
Neuzpůsobitelné informace a funkce jsou obsaženy objektem poskytovaným ElementInformationElementInformation vlastností .
K vytvoření vlastního elementu konfigurace můžete použít buď programový model, nebo model deklarativního kódování (s atributy):
Programový model vyžaduje, abyste pro každý atribut prvku vytvořili vlastnost pro získání nebo nastavení jeho hodnoty a přidali ji do interního kontejneru vlastností základní ConfigurationElement třídy. Příklad použití tohoto modelu najdete ve ConfigurationSection třídě .
Jednodušší deklarativní model, označovaný také jako model s atributy, umožňuje definovat atribut elementu pomocí vlastnosti a pak ho ozdobit atributy. Tyto atributy instruují konfigurační systém ASP.NET o typech vlastností a jejich výchozích hodnotách. S těmito informacemi získanými reflexí konfigurační systém ASP.NET vytvoří objekty vlastností elementu za vás a provede požadovanou inicializaci. Příklad uvedený dále v tomto tématu ukazuje, jak tento model používat.
Konstruktory
ConfigurationElement() |
Inicializuje novou instanci ConfigurationElement třídy. |
Vlastnosti
CurrentConfiguration |
Získá odkaz na instanci nejvyšší úrovně Configuration , která představuje hierarchii konfigurace, do které aktuální ConfigurationElement instance patří. |
ElementInformation |
Získá ElementInformation objekt, který obsahuje přizpůsobitelné informace a funkce objektu ConfigurationElement . |
ElementProperty |
ConfigurationElementProperty Získá objekt, který představuje ConfigurationElement samotný objekt. |
EvaluationContext |
ContextInformation Získá objekt pro ConfigurationElement objekt. |
HasContext |
Získá hodnotu, která označuje, zda CurrentConfiguration je |
Item[ConfigurationProperty] |
Získá nebo nastaví vlastnost nebo atribut tohoto elementu konfigurace. |
Item[String] |
Získá nebo nastaví vlastnost, atribut nebo podřízený prvek tohoto elementu konfigurace. |
LockAllAttributesExcept |
Získá kolekci uzamčených atributů. |
LockAllElementsExcept |
Získá kolekci uzamčených prvků. |
LockAttributes |
Získá kolekci uzamčených atributů. |
LockElements |
Získá kolekci uzamčených prvků. |
LockItem |
Získá nebo nastaví hodnotu označující, zda je prvek uzamčen. |
Properties |
Získá kolekci vlastností. |
Metody
DeserializeElement(XmlReader, Boolean) |
Načte XML z konfiguračního souboru. |
Equals(Object) |
Porovná aktuální ConfigurationElement instanci se zadaným objektem. |
GetHashCode() |
Získá jedinečnou hodnotu představující aktuální ConfigurationElement instanci. |
GetTransformedAssemblyString(String) |
Vrátí transformovanou verzi zadaného názvu sestavení. |
GetTransformedTypeString(String) |
Vrátí transformovanou verzi zadaného názvu typu. |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
Init() |
ConfigurationElement Nastaví objekt do počátečního stavu. |
InitializeDefault() |
Slouží k inicializaci výchozí sady hodnot objektu ConfigurationElement . |
IsModified() |
Určuje, zda byl tento konfigurační prvek změněn od posledního uložení nebo načtení, když byl implementován v odvozené třídě. |
IsReadOnly() |
Získá hodnotu označující, zda ConfigurationElement objekt je jen pro čtení. |
ListErrors(IList) |
Přidá do předaného seznamu chyby neplatné vlastnosti v tomto ConfigurationElement objektu a ve všech dílčích pomůcecích. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
OnDeserializeUnrecognizedAttribute(String, String) |
Získá hodnotu označující, zda je zjištěn neznámý atribut během deserializace. |
OnDeserializeUnrecognizedElement(String, XmlReader) |
Získá hodnotu označující, zda neznámý prvek je nalezen během deserializace. |
OnRequiredPropertyNotFound(String) |
Vyvolá výjimku, pokud není nalezena požadovaná vlastnost. |
PostDeserialize() |
Volá se po deserializaci. |
PreSerialize(XmlWriter) |
Volá se před serializací. |
Reset(ConfigurationElement) |
Resetuje vnitřní stav objektu ConfigurationElement , včetně zámků a kolekcí vlastností. |
ResetModified() |
Resetuje hodnotu IsModified() metody na |
SerializeElement(XmlWriter, Boolean) |
Zapíše obsah tohoto konfiguračního prvku do konfiguračního souboru při implementaci v odvozené třídě. |
SerializeToXmlElement(XmlWriter, String) |
Zapíše vnější značky tohoto elementu konfigurace do konfiguračního souboru při implementaci v odvozené třídě. |
SetPropertyValue(ConfigurationProperty, Object, Boolean) |
Nastaví vlastnost na zadanou hodnotu. |
SetReadOnly() |
IsReadOnly() Nastaví vlastnost objektu ConfigurationElement a všech dílčích elementů. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Unmerge(ConfigurationElement, ConfigurationElement, ConfigurationSaveMode) |
Upraví objekt tak, ConfigurationElement aby odebral všechny hodnoty, které by neměly být uloženy. |