Я пытался сериализовать массив через границу 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 при сериализации класса? И действительно ли они вызывают передачу параметра по ссылке или просто копируется содержимое?