我认为创建派生属性是最好的选择。
您可以使用xml模式来设计您的新类。然后用xsd.exe生成类代码。
使用.net并不难开发一个泛型类,它可以序列化和反序列化xml中的所有类型。
public static String toXmlString<T>(T value)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
StringWriter stringWriter = new StringWriter();
try { xmlSerializer.Serialize(stringWriter, value); }
catch (Exception e)
{
throw(e);
}
finally { stringWriter.Dispose(); }
String xml = stringWriter.ToString();
stringWriter.Dispose();
return xml;
}
public static T fromXmlFile<T>(string fileName, Encoding encoding)
{
Stream stream;
try { stream = File.OpenRead(fileName); }
catch (Exception e)
{
e.Data.Add("File Name", fileName);
e.Data.Add("Type", typeof(T).ToString());
throw(e);
}
BufferedStream bufferedStream = new BufferedStream(stream);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
TextReader textReader;
if (encoding == null)
textReader = new StreamReader(bufferedStream);
else
textReader = new StreamReader(bufferedStream, encoding);
T value;
try { value = (T)xmlSerializer.Deserialize(textReader); }
catch (Exception e)
{
e.Data.Add("File Name", fileName);
e.Data.Add("Type", typeof(T).ToString());
throw(e);
}
finally
{
textReader.Dispose();
bufferedStream.Dispose();
}
return value;
}
是XML必需?你的两个缺点都说XML必须被处理。这感觉就像你不想使用XML ... – tuergeist 2009-07-01 09:04:07
是的,这是客户知道的一个流行语要求。 :) – Groo 2009-07-01 09:11:24
我会选择“为每个新设备创建派生的属性类”... – tuergeist 2009-07-01 09:17:18