My last question was about getting the string representation of an object serialized to XML。其中一个响应者编写了一个扩展方法来封装序列化过程。现在将IEnumerable对象序列化为字符串数组的扩展方法?
我的问题是如何使用的扩展方法时传递了一个IEnumerable<T>
对象,数组中的每个string
将是IEnumerable<T>
的单独序列元素来返回一个字符串,数组。
在此先感谢!
My last question was about getting the string representation of an object serialized to XML。其中一个响应者编写了一个扩展方法来封装序列化过程。现在将IEnumerable对象序列化为字符串数组的扩展方法?
我的问题是如何使用的扩展方法时传递了一个IEnumerable<T>
对象,数组中的每个string
将是IEnumerable<T>
的单独序列元素来返回一个字符串,数组。
在此先感谢!
使用链接中的代码示例,可以添加另一种类似的方法,或使用ToArray()方法将它们转换为数组。
public static class XmlTools
{
public static IEnumerable<string> ToXmlString<T>(this IEnumerable<T> inputs)
{
return inputs.Select(pArg => pArg.ToXmlString());
}
}
我会写我的扩展方法来产生一个新的IEnumerable,而不是一个数组:
public static IEnumerable<string> XmlSerializeAll<T>(this IEnumerable<T> input)
{
foreach (T item in input)
{
yield return item.ToXmlString();
}
}
你可以得到你想要的阵列易于使用
var myArray = myEnumerable.XmlSerializeAll().ToArray();
这样,你增加了一些灵活性。这是可能产生列表,而不是,或使用无限长的枚举,如果你喜欢:)
darn you beat me – 2009-07-16 16:23:26
要回答你的下几个问题...
new XElement("people", myPeople.ToXElements());
public static class XmlTools
{
public static XElement ToXElement<T>(this T input)
{
return XElement.Parse(input.ToXmlString());
}
public static IEnumerable<XElement> ToXElements<T>(this IEnumerable<T> input)
{
foreach (var item in input)
yield return input.ToXElement();
}
public static IEnumerable<string> ToXmlString<T>(this IEnumerable<T> input)
{
foreach (var item in input)
yield return item.ToXmlString();
}
public static string ToXmlString<T>(this T input)
{
using (var writer = new StringWriter())
{
input.ToXml(writer);
return writer.ToString();
}
}
public static void ToXml<T>(this T objectToSerialize, Stream stream)
{
new XmlSerializer(typeof(T)).Serialize(stream, objectToSerialize);
}
public static void ToXml<T>(this T objectToSerialize, StringWriter writer)
{
new XmlSerializer(typeof(T)).Serialize(writer, objectToSerialize);
}
}
的可能感兴趣:研究语言Cω(其中Linq的一些想法是第一个原型)自动定义了您的示例方法。 `IEnumerable`将有效地使用与`T`方法同名的方法,但返回类型`R`将变为`IEnumerable `。这就像“Select”以非常简洁的方式嵌入语言中。 –
2009-07-16 16:29:36