- Section de configuration:
<NHibernateManager SQLGeneratorType="SQLITE"> <Databases> <Database id="DefaultDatabase" crypted="false" fileName="DefaultDataBase.cfg"/> </Databases> </NHibernateManager>
Voici un exemple:
- Classe concrète
- App.Config
public class NHibernateConfigurationManager : IConfigurationSectionHandler { public object Create(object parent, object configContext, XmlNode section) { ... } }
<section name="NHibernateManager" type="NhibernateDbManager.NHibernateConfigurationManager, NhibernateDbManager"/>
L'exemple fourni ci-dessous provient des bibliothèques Lelibre.* et utilisent les attributs/héritages.
- App.Config
- Classes
<section name="NHibernateManager" type="NhibernateDbManager.NHibernateOptions, NhibernateDbManager"/>
public class NHibernateOptions : ConfigurationSection { [ConfigurationProperty("SQLGeneratorType", IsRequired = true)] public string SQLGeneratorType { get { return (string)this["SQLGeneratorType"]; } set { this["SQLGeneratorType"] = value; } } [ConfigurationProperty("Databases")] [ConfigurationCollection(typeof(ModuleConfigurationDatabases), AddItemName = "Database")] public ModuleConfigurationDatabases Databases { get { return (ModuleConfigurationDatabases)this["Databases"]; } } } public class ModuleConfigurationDatabases : ConfigurationElementCollection { public ModuleConfiguration this[int index] { get { return (ModuleConfiguration)base.BaseGet(index); } } #region Implémentation de ConfigurationElementCollection protected override ConfigurationElement CreateNewElement() { return new ModuleConfiguration(); } protected override object GetElementKey(ConfigurationElement element) { return ((ModuleConfiguration)element).ID; } #endregion } public class ModuleConfiguration : ConfigurationElement { [ConfigurationProperty("id", DefaultValue = "DefaultDatabase", IsRequired = true, IsKey = true)] public string ID { get { return (string)this["id"]; } set { this["id"] = value; } } [ConfigurationProperty("fileName", IsRequired = true)] public string FilePath { get { return (string)this["fileName"]; } set { this["fileName"] = value; } } [ConfigurationProperty("crypted", DefaultValue = false)] public bool Crypted { get { return (bool)this["crypted"]; } set { this["crypted"] = value; } } }