相关疑难解决方法(0)

In和Out属性如何在.NET中运行?

我一直在尝试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以某种方式识别?它们是否真的导致参数通过引用传递,或者内容是否被复制?

c# parameters serialization attributes marshalbyrefobject

10
推荐指数
1
解决办法
1988
查看次数