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