При маршалировании объектов между AppDomains в .NET CLR будет либо сериализовать объект (если он имеет атрибут Serializable
), либо он будет генерировать прокси (если он наследует от MarshalByRef
)
С помощью строк, однако, CLR просто передаст ссылку на объект string в новый AppDomain. CLR по-прежнему обеспечивает целостность, так как строки .NET неизменяемы, и любое изменение второго AppDomain в строке не будет влиять на исходный объект.
Это подводит меня к моему вопросу: есть ли способ сообщить CLR, что мой пользовательский тип неизменен и при использовании в удалении он должен просто передать ссылку на объект так же, как и со строковым классом?