C# &引用&书信电报;serviceconfigxmlns=&x27'&燃气轮机;没有预期的错误
我有一个扩展基类的程序,如下所示:C# &引用&书信电报;serviceconfigxmlns=&x27'&燃气轮机;没有预期的错误,c#,xml,xml-deserialization,C#,Xml,Xml Deserialization,我有一个扩展基类的程序,如下所示: namespace ConsoleExample { [Serializable, XmlRoot("ServiceConfig")] public class ServiceConfig : BaseConfig<ServiceConfig> { } } <?xml version="1.0" encoding="utf-8"?> <ServiceConfig xmlns:xsi="http:
namespace ConsoleExample
{
[Serializable, XmlRoot("ServiceConfig")]
public class ServiceConfig : BaseConfig<ServiceConfig>
{
}
}
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<WindowTitle>Utility</WindowTitle>
<LicenseKey />
<BaseUri />
<!-- Database connection information -->
<DatabaseInfo>
<ServerName>ABC</ServerName>
<DatabaseName>XYZ</DatabaseName>
...
名称空间控制台示例
{
[可序列化,XmlRoot(“ServiceConfig”)]
公共类ServiceConfig:BaseConfig
{
}
}
其中BaseConfig包括以下方法:
public abstract class BaseConfig<T> where T : BaseConfig<T>
{
...
public void LoadConfig()
{
// Load configuration file
ConfigReader<BaseConfig<T>> _configReader = new ConfigReader<BaseConfig<T>>(configFileName);
_configReader.Load();
...
公共抽象类BaseConfig,其中T:BaseConfig
{
...
公共void LoadConfig()
{
//加载配置文件
ConfigReader _ConfigReader=新的ConfigReader(configFileName);
_configReader.Load();
...
而ConfigReader是:
public class ConfigReader<T>
{
...
public Boolean Load()
{
try
{
reader = new XmlTextReader(new StreamReader(_actualPath));
XmlSerializer serializer = new XmlSerializer(typeof(T));
deserializedObject = (T)(serializer.Deserialize(reader));
}
}
...
公共类ConfigReader
{
...
公共布尔加载()
{
尝试
{
reader=newxmltextreader(newstreamreader(_actualPath));
XmlSerializer serializer=新的XmlSerializer(typeof(T));
反序列化对象=(T)(序列化程序.反序列化(读取器));
}
}
...
我的XML是这样的:
namespace ConsoleExample
{
[Serializable, XmlRoot("ServiceConfig")]
public class ServiceConfig : BaseConfig<ServiceConfig>
{
}
}
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<WindowTitle>Utility</WindowTitle>
<LicenseKey />
<BaseUri />
<!-- Database connection information -->
<DatabaseInfo>
<ServerName>ABC</ServerName>
<DatabaseName>XYZ</DatabaseName>
...
公用事业
基础知识
XYZ
...
当我运行此程序时,我收到错误消息“未预期错误
我发现这建议添加XMLRoot标记,但这没有帮助。我认为这可能是因为反序列化是在BaseConfig程序中编码的,无法正确解释XMLRoot,但不确定如何更正
编辑:
通过使用以下方法创建ConfigReader对象解决了此问题:
public void LoadConfig()
{
//加载配置文件
ConfigReader _ConfigReader=新的ConfigReader(configFileName);
...
你为什么要重新发明轮子?为什么不在app.config中添加一个自定义配置部分,让ConfigurationManager
完成所有工作?@DStanley你能进一步解释一下吗?不知道我在重新发明什么。如果有人看到这篇文章,我就通过使用just(参见编辑)创建ConfigReader解决了这个问题。