Lorsque marshaling objets entre AppDomains dans .NET le CLR soit sérialiser l'objet (si elle a l'attribut Serializable
) ou il va générer un proxy (si elle hérite de MarshalByRef
)Puis-je demander au CLR de rassembler des objets immuables entre AppDomains par référence?
Avec des chaînes mais le CLR passe tout juste la référence à l'objet chaîne dans le nouvel AppDomain. Le CLR assure toujours l'intégrité puisque les chaînes .NET sont immuables et toute modification apportée par le second AppDomain à la chaîne n'affectera pas l'objet d'origine. Ce qui m'amène à ma question: existe-t-il un moyen de dire au CLR que mon type personnalisé est immuable et lorsqu'il est utilisé à distance il devrait juste passer la référence à l'objet comme il le fait avec la classe de chaînes?
Vous ne savez pas si cela est lié, mais est-ce qu'il épingle la chaîne avant qu'elle ne la laisse traverser la limite? –
Si par pin vous voulez dire comme un bloc {} fixe, alors non, l'épinglage est seulement utilisé lors de l'envoi de références d'objets dans un territoire non géré. – Yona