【发布时间】:2012-12-31 06:17:52
【问题描述】:
我必须在 XML 下反序列化。但我必须将传感器数据存储到动态加载的类中。 我该怎么做?
XML 格式
<Root>
<Sensor id="0" Channel="1000">
<SensorName>RM-T</SensorName>
<SensorValue>148.00</SensorValue>
</Sensor>
<Sensor id="1" Channel="1001">
<SensorName>SAT1</SensorName>
<SensorValue>148.00</SensorValue>
</Sensor>
</Root>
存储反序列化数据的主类
[Serializable]
[XmlRoot(ElementName = "Root")]
public class Controller
{
public List<Sensor> SensorList
{
get;
set;
}
}
传感器类
public abstract class Sensor
{
String SensorName { get; set; }
String SensorValue { get; set; }
public abstract override String ToString();
}
RegularSensor 类
public class RegularSensor : Sensor
{
public override string ToString()
{
//Implementation goes here
}
}
在反序列化期间,我需要将传感器数据加载到 RegularSensor 类 我该怎么做?
【问题讨论】:
-
为什么需要动态的?对我来说看起来很静态..
-
XML 来自硬件控制器,具体取决于控制器,数据处理会发生变化。因此 Sensorvalue 会有不同的实现。未来抽象类中会有不同的功能,不同的实现
-
...但 SensorValue 在您的示例中是一个属性.. 不是根对象。你是说根对象(xml的结构布局)会改变吗?还是只是价值观?
-
XMl 的结构不会改变。但节点的别名可能会改变。例如,在某些 XML 中,“SensorValue”将是“Value”
-
在java中我使用这个代码做了同样的事情 - XStream xStreamXmlSerializer = new XStream(new DomDriver()); xStreamXmlSerializer.alias("Sensor", RegularSensor.class);
标签: c# xml-serialization