Надеюсь, это легкое решение, которое я забыл. У меня есть объект, переданный в обработчик событий, который я хочу сериализовать этот объект с помощью JSON.NET, например:
public void OnEvent(IEventObject foo)
{
// Serialize foo to string/disk here?
var data = JsonConvert.SerializeObject(foo, Formatting.Indented);
}
Похоже, что один или несколько членов foo являются потоками. Я уже признаю, что потоки не сериализуемы, поскольку они являются абстракцией по данным, а не самим данным. Это имеет смысл.
Я не знаю, как сериализовать этот объект в любом случае:
- a) Преобразование потоков в данные и их сериализация
- b) Игнорирование потоков и сериализация оставшихся членов
Одно большое предостережение в том, что у меня нет доступа к IEventObject или его реализациям, поэтому я не могу пометить любой из этих объектов флажками атрибутов.
Единственное решение, с которым я столкнулся, - это обернуть этот объект в моем собственном классе, соответствующим образом пометить его и сериализовать. Позже я бы десериализовал обратно в свой класс и преобразовал его в исходный объект. Мне не нравится этот подход, поскольку он включает дополнительный объект и шаг перехода, и хотел бы избежать его, если это возможно.