Когда следующий класс сериализуется с BinaryFormatter
, любые объекты, подписавшиеся на событие Roar
, также будут сериализованы, так как ссылки на эти объекты хранятся делегатом EventHandler.Как игнорировать подписчиков событий при сериализации объекта?
[Serializable]
public class Lion
{
public event EventHandler Roar;
public string Name { get; set; }
public float Fluffiness { get; set; }
public Lion(string name, float fluffiness)
{
Name = name;
Fluffiness = fluffiness;
}
public void Poke()
{
Roar(); // Could be null, etc..
}
}
Как бы вы остановить подписчиков событий сериализуемый как часть объекта графа, начиная с Lion?
Помещение атрибута [NonSerializable]
на event
не компилируется.
Примечание: Я отвечаю на свой вопрос, поскольку, по-моему, было бы полезно иметь информацию на сайте!
Вопросы и ответы: Также прекрасно спросить и ответить на свой вопрос, но притворяйтесь, что вы находитесь под угрозой: произнесите его в форме вопроса.
Спасибо. Но почему? –
Это связано с тем, что для параметра System.NonSerializedAttribute есть ограничение: оно может применяться только к полям! – Grubl3r