我想知道类实例的大致XML序列化大小,而不实际序列化实例。当然,我可以提供一个属性,将所有字段的大小以及将生成的XML标记的填充值一起明确加总。然而,(1)我想知道是否已经有一个工具可以达到这个目的 - 也许是扩展方法,如果不是的话(2)我想知道如何制作一个使用反射来近似大小的循环。可序列化类的近似大小
现在我正在做这样的事情:
private static readonly int averageTagSize = 20;
[NonSerialized]
public int EventSize
{
get
{
int size = 0;
FieldInfo[] fields = this.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (FieldInfo field in fields)
{
size += averageTagSize;
switch (field.FieldType){
case typeof(int):
size += 32;
break;
case typeof(string):
string temp = field.GetValue(this) as string;
size += temp.Length;
break;
//...and so on
}
}
return 0;
}
}
上面的代码不起作用,因为编译器不会让我打开类型信息。建议?
你能走了过来每个属性和调用大小?从来没有真正与此有关,但这是我开始 – PostMan 2010-08-31 01:20:50
@PostMan:sizeof地址编译时的大小。它没有计算机的运行时间值(例如我的班级中分配的字符串的长度)。 – 2010-08-31 01:36:23
是的,但是对于字符串的长度来说,它会是'sizeof(char)* string.length'是不正确的? – PostMan 2010-08-31 01:40:39