【发布时间】:2010-02-24 09:16:48
【问题描述】:
我知道我不能在 C# 中扩展静态类,我不真的明白其中的原因,但我明白 它不可能完成。
因此,考虑到这一点,这就是我想要实现的目标:
public static class GenericXmlSerialisationExtender
{
public static void WriteToXML<T>(this T targetObject, string fileName)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter writer = new StreamWriter(fileName, false, Encoding.UTF8))
{
serializer.Serialize(writer, targetObject);
}
}
public static T ReadFromXML<T>(string fileName)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StreamReader(fileName, Encoding.UTF8))
{
return (T)serializer.Deserialize(reader);
}
}
}
即我想为实例定义 .WriteToXML(我需要使用很多配置/静态数据类,它们只使用 vanilla XML 序列化),然后为类型定义 .ReadFromXML。
如此有效,我可以这样称呼:
MyType typeInstance = MyType.ReadFromXML(path_to_data);
封装它的“正确”方式是什么?我曾经和一位同事一起工作,他认为“代码重用”是复制和粘贴,我宁愿不把自己放在那个括号里!
【问题讨论】:
标签: c# generics serialization extension-methods