Como excluir observadores não serializáveis de um implementador [Serializable] INotifyPropertyChanged?

Tenho quase uma centena de classes de entidades assim:

[Serializable]
public class SampleEntity : INotifyPropertyChanged
{
    private string name;
    public string Name
    {
        get { return this.name; }
        set { this.name = value; FirePropertyChanged("Name"); }
    }

    [field:NonSerialized]
    public event PropertyChangedEventHandler PropertyChanged;

    private void FirePropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
            this.PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
    }
}

Observe o[field:NonSerialized] atributo emPropertyChanged. Isso é necessário, pois alguns dos observadores (no meu caso - uma grade exibindo as entidades para edição) podem não ser serializáveis, e a entidade precisa ser serializável, porque é fornecida - via comunicação remota - por um aplicativo em execução em uma máquina separadora .

Esta solução funciona bem para casos triviais. No entanto, é possível que alguns dos observadores sejam[Serializable] e precisaria ser preservado. Como devo lidar com isso?

Solutions Estou considerando:

cheioISerializable - a serialização personalizada exige a criação de muito código, eu preferiria não fazer issousing[OnSerializing] e[OnDeserializing] atributos para serializarPropertyChanged manualmente - mas esses métodos auxiliares fornecem apenasSerializationContext, que o AFAIK não armazena dados de serialização SerializationInfo faz isso)

questionAnswers(1)

yourAnswerToTheQuestion