【发布时间】:2012-02-22 17:33:10
【问题描述】:
我一直在尝试使用以下代码跨 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以某种方式识别?并且它们是否真的导致参数通过引用传递,还是只是复制了内容?
【问题讨论】:
标签: c# serialization parameters attributes marshalbyrefobject