我试图实现使用.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();
}