无法使用 YamlDotNet 序列化 KeyValuePair
Unable to serialize a KeyValuePair with YamlDotNet
我正在编写一个简单的 class 序列化我的 IConfiguration
接口,它具有以下方法
IEnumerable<KeyValuePair<string, object>> GetAllProperties();
在我的 class 我有一个方法
public void WriteConfiguration(IConfiguration data, Stream stream)
{
new Serializer().Serialize(new StreamWriter(stream), data.GetAllProperties());
}
但是 Serializer
不会向流中写入任何内容。我在某处读到 KeyValuePair
不可序列化,但现在不再是这种情况(它在 .NET 2.0 中)
我首先尝试将 IEnumerable
转换为 List
(使用 .ToList()
),但没有任何改变。然后我尝试创建一个 class 来代替 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; }
}
但是还是不行
这是因为您没有处理 StreamWriter
,所以它不会被刷新到流中。尝试将其放在 using
块中:
public void WriteConfiguration(IConfiguration data, Stream stream)
{
using (var writer = new StreamWriter(stream))
{
new Serializer().Serialize(writer, data.GetAllProperties());
}
}
注意:默认情况下,处理 StreamWriter
也会关闭底层流。如果要保持打开状态,请使用 the StreamWriter
constructor overload that takes a leaveOpen
parameter,并为此参数传递 true。
我正在编写一个简单的 class 序列化我的 IConfiguration
接口,它具有以下方法
IEnumerable<KeyValuePair<string, object>> GetAllProperties();
在我的 class 我有一个方法
public void WriteConfiguration(IConfiguration data, Stream stream)
{
new Serializer().Serialize(new StreamWriter(stream), data.GetAllProperties());
}
但是 Serializer
不会向流中写入任何内容。我在某处读到 KeyValuePair
不可序列化,但现在不再是这种情况(它在 .NET 2.0 中)
我首先尝试将 IEnumerable
转换为 List
(使用 .ToList()
),但没有任何改变。然后我尝试创建一个 class 来代替 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; }
}
但是还是不行
这是因为您没有处理 StreamWriter
,所以它不会被刷新到流中。尝试将其放在 using
块中:
public void WriteConfiguration(IConfiguration data, Stream stream)
{
using (var writer = new StreamWriter(stream))
{
new Serializer().Serialize(writer, data.GetAllProperties());
}
}
注意:默认情况下,处理 StreamWriter
也会关闭底层流。如果要保持打开状态,请使用 the StreamWriter
constructor overload that takes a leaveOpen
parameter,并为此参数传递 true。