Я хотел бы знать приблизительный сериализованный размер 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;
}
}
Приведенный выше код не работает, так как компилятор не позволяет мне включать информацию о типе. Предложения?