Stavo guardando di recente la serializzazione di runtime e ho trovato l'interfaccia ISerializationSurrogate
. Sono confuso circa il suo metodo SetObject
tuttavia.Perché ISerializationSurrogate.SetObject restituisce un oggetto e accetta la compilazione di un oggetto?
La firma è:
object SetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.ISurrogateSelector selector)
e le informazioni della guida è:
Sommario:
popola l'oggetto utilizzando le informazioni contenute nella System.Runtime.Serialization .SerializationInfo.
Parametri:
obj: l'oggetto per popolare.
informazioni: Le informazioni per popolare l'oggetto.
contesto: La sorgente da cui l'oggetto è deserializzato.
selettore: Il selettore surrogato in cui inizia la ricerca di un surrogato compatibile.
Returns:
L'oggetto deserializzato popolate.
Se obj
è l'oggetto da popolare, perché restituisce The populated deserialized object
? In uno example da MSDN vengono inseriti i valori obj
e return null
.
La mia ipotesi è che ti dà la possibilità di creare una nuova istanza e restituirla invece di riempire quella esistente (se ci sono alcuni setter mancanti ad esempio), ma dovrai testarla ... – Seb
Sembrerebbe che se restituite null, 'SurrogateSelector' restituisce il parametro' obj', ma se restituite un oggetto, è quell'oggetto che viene passato indietro. Sembra un modo strano di fare le cose se me lo chiedi. –