我試圖實現使用.NET IFormatter界面自定義格式。實施IFormatter遞歸
一對夫婦的搜索小時後,我才發現一個非常基本的樣本不幸的是不包括遞歸。我也嘗試使用Reflector來查看BinaryFormatter和SoapFormatter,但它們相當複雜。
我的問題是: 我應該執行遞歸自己,或者有什麼東西我在FormatterServices錯過了什麼?
下面我的代碼:
public void Serialize(Stream serializationStream, object graph)
{
// Get fields that are to be serialized.
MemberInfo[] members = FormatterServices.GetSerializableMembers(graph.GetType(), Context);
// Get fields data.
object[] data = FormatterServices.GetObjectData(graph, members);
// Write class name and all fields & values to file
StreamWriter sw = new StreamWriter(serializationStream);
string accumulator = string.Empty;
for (int i = 0; i < data.Length; ++i)
{
// Skip this field if it is marked NonSerialized.
if (Attribute.IsDefined(members[i], typeof(NonSerializedAttribute)))
continue;
FieldInfo field = (FieldInfo)members[i];
if (field.FieldType.IsPrimitive)
{
}
else //TODO: What should I do here?
}
sw.Close();
}