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