我在 Web.Config 文件中有一个自定义部分,并通过 configSource 引用另一个 .config 文件。我已经为我的架构使用 XSD 生成了 .cs 文件。如何使用我生成的类来反序列化配置。当我尝试使用 .GetSection() 方法加载 configsection 时,它给了我该类应该从 ConfigurationSection 实现的错误。由于我使用 xsd 生成了这些类,因此它们不是从 ConfigurationSection 或 ConfigurationElement 继承的。提前致谢!!
问问题
991 次
1 回答
0
我已经实现了 ConfigurationSection 中的类来获取文件名,并使用 XMLSerializer 使用 XSD 工具生成的类来反序列化。这是示例:
namespace mycontrol
{
public class ConfigurationSection : System.Configuration.ConfigurationSection
{
//Configuration is the type generated by XSD for my schema element Configuration
private static Configuration _config;
/// <summary>
/// static method to load config section and deserialize config
/// </summary>
/// <returns></returns>
private static Configuration GetConfig()
{
if (_config == null)
{
ConfigurationSection configSection = (ConfigurationSection)ConfigurationManager.GetSection("SearchControlsConfig") as ConfigurationSection;
if (!string.IsNullOrEmpty(configSection.ExternalConfigSource))
{
string strFilePath = configSection.ExternalConfigSource;
if (!File.Exists(strFilePath))
{
strFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strFilePath);
if (!File.Exists(strFilePath))
return null;
}
using (FileStream fs = new FileStream(strFilePath, FileMode.Open, FileAccess.Read))
{
XmlSerializer config = new XmlSerializer(typeof(Configuration));
_config = (Configuration)config.Deserialize(fs);
}
}
}
return _config;
}
/// <summary>
/// Attribute to specify config source file in custom config section
/// </summary>
[ConfigurationProperty("externalConfigSource", DefaultValue = "", IsRequired = false)]
public string ExternalConfigSource
{
get
{
return this["externalConfigSource"] as string;
}
}
}
}
在指定自定义配置时,我不能将 configSource 属性用作我的属性,因为它是由 ConfigurationManager 保留的。
于 2011-06-23T06:42:15.640 回答