我一直在尝试AppDomain
使用以下代码跨边界序列化数组:
public int Read(byte[] buffer, int offset, int count)
{
return base.Read(buffer, offset, count);
}
作为猜测,在注意到其他地方的属性之后,我用[In]
和[Out]
属性标记了方法的参数,这似乎导致参数的行为就像它们通过引用传递一样。
例如:
public int Read([In, Out] byte[] buffer, int offset, int count)
{
return base.Read(buffer, offset, count);
}
在我添加属性之前,buffer
从方法越界返回后,变量的内容就丢失了AppDomain
。
类 ( SslStream
) 继承自该属性,MarshalByRefObject
但未标记该Serializable
属性。这是使参数按值传递的唯一方法吗?当类被序列化时,这些属性是否被.NET以某种方式识别?它们真的会导致参数通过引用传递,还是只是复制了内容?