C# 无法使用YamlDotNet序列化KeyValuePair
我正在编写一个简单的类来序列化我的C# 无法使用YamlDotNet序列化KeyValuePair,c#,serialization,yamldotnet,C#,Serialization,Yamldotnet,我正在编写一个简单的类来序列化我的IConfiguration接口,该接口具有以下方法 IEnumerable<KeyValuePair<string, object>> GetAllProperties(); 但是序列化程序不向流写入任何内容。我在某个地方读到,KeyValuePair不可序列化,但现在不再是这样了(在.NET2.0中) 我首先尝试将IEnumerable转换为列表(使用.ToList()),但没有任何更改。然后我尝试创建一个类来代替KeyValueP
IConfiguration
接口,该接口具有以下方法
IEnumerable<KeyValuePair<string, object>> GetAllProperties();
但是序列化程序不向流写入任何内容。我在某个地方读到,KeyValuePair
不可序列化,但现在不再是这样了(在.NET2.0中)
我首先尝试将IEnumerable
转换为列表
(使用.ToList()
),但没有任何更改。然后我尝试创建一个类来代替KeyValuePair
:
[Serializable]
private class Pair<TKey, TValue>
{
public Pair() { }
public Pair(TKey key, TValue value)
{
Key = key;
Value = value;
}
public TKey Key { get; set; }
public TValue Value { get; set; }
}
[可序列化]
私有类对
{
公共对(){}
公共对(TKey、TValue)
{
钥匙=钥匙;
价值=价值;
}
公钥{get;set;}
公共TValue值{get;set;}
}
但它仍然不起作用。这是因为您没有处理StreamWriter
,因此它不会被刷新到流中。尝试使用
块将其放入:
public void WriteConfiguration(IConfiguration data, Stream stream)
{
using (var writer = new StreamWriter(stream))
{
new Serializer().Serialize(writer, data.GetAllProperties());
}
}
注意:默认情况下,处理StreamWriter
也将关闭底层流。如果要保持打开状态,请使用此参数并将其传递为true。似乎对我有用。。。我怀疑这可能是因为你从未处理过StreamWriter,所以它从未刷新过。
public void WriteConfiguration(IConfiguration data, Stream stream)
{
using (var writer = new StreamWriter(stream))
{
new Serializer().Serialize(writer, data.GetAllProperties());
}
}