Код: Выделить всё
public void Store(Stream s, object t)
{
var serializer = new DataContractSerializer(target.GetType(),
new DataContractSerializerSettings
{
PreserveObjectReferences = true
});
serializer.WriteObject(s, target);
}
Есть ли способ получить количество байтов, записанных в поток с помощью WriteObject? Я знаю, что могу сделать это следующим образом:
Код: Выделить всё
using (var memStream = new MemoryStream())
{
serializer.WriteObject(serializer, target);
Debug.WriteLine(memStream.Length);
memStream.CopyTo(s);
}
РЕДАКТИРОВАТЬ:
Мне только что пришла в голову идея: я могу создать оболочку, которая подсчитывает байты при записи. Это лучшее решение, настолько жирное, но, возможно, есть другой способ.
СДЕЛАНО
Я реализовал обертку: https://github.com/pwasiewicz/counted-stream — возможно, кому-то будет полезно.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/303 ... serializer