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