在 .NET 中的 AppDomain 之间编组对象时,CLR 将序列化对象(如果它具有Serializable
属性)或生成代理(如果它继承自MarshalByRef
)
但是,对于字符串,CLR 只会将对字符串对象的引用传递到新的 AppDomain。CLR 仍然确保完整性,因为 .NET 字符串是不可变的,并且第二个 AppDomain 对字符串的任何更改都不会影响原始对象。
这让我想到了我的问题:有没有办法告诉 CLR 我的自定义类型是不可变的,当用于远程处理时,它应该像处理字符串类一样传递对对象的引用?