Quando marshalling oggetti tra AppDomain NET CLR sarà o serializzare l'oggetto (se ha l'attributo Serializable
) o si genererà un proxy (se eredita da MarshalByRef
)Posso dire al CLR di eseguire il marshalling di oggetti immutabili tra AppDomains per riferimento?
Con stringhe tuttavia CLR sarà sufficiente passare il riferimento all'oggetto stringa nel nuovo AppDomain. Il CLR garantisce ancora l'integrità poiché le stringhe .NET sono immutabili e qualsiasi modifica apportata dal secondo AppDomain alla stringa non influirà sull'oggetto originale.
Il che mi porta alla mia domanda: c'è un modo per dire al CLR che il mio tipo personalizzato è immutabile e quando viene utilizzato in remotazione dovrebbe semplicemente passare il riferimento all'oggetto come fa con la classe stringa?
Non è sicuro se questo è correlato, ma pin la stringa prima che consenta di attraversare il confine? –
Se per pin si intende come un blocco {} fisso, quindi no, il pinning viene utilizzato solo quando si inviano riferimenti a oggetti nel territorio non gestito. – Yona