MemoryMappedViewAccessor
클래스에서 Write<T>
함수를 사용하려고합니다.지정된 형식이 참조가없는 구조체 여야합니다.
[StructLayout(LayoutKind.Explicit)]
public struct Message
{
public void AddString(string str)
{
if (stringContents == null)
stringContents = new byte[1024 * 10];
stringContents = Encoding.ASCII.GetBytes(str);
}
public string GetString()
{
if (stringContents == null)
return string.Empty;
return Encoding.ASCII.GetString(stringContents);
}
[FieldOffset(0)]
public byte[] stringContents;
}
을 그러나, 나는이 같은 전화를 걸 때 :
지정된 유형 :
//Initialized Elsewhere: MemoryMappedViewAccessor writer Message messageAlreadyOnWire = new Message(); messageAlreadyOnWire.AddString(data); writer.Write<Message>(0, ref messageAlreadyOnWire);
다음과 같이 나는 오류가 발생 다음과 같이 내
T
이 경우는 참조를 포함하지 않는 구조체 여야합니다. 매개 변수 이름 : 유형
내 구조체의 유일한 '참조'는 바이트 배열입니다. 이 문제를 해결할 방법이 있습니까? 고정 길이 바이트 배열은 괜찮지 만,하지 말고 unsafe
의 땅을 탐색하지 않고 선언하는 방법을 잘 모르겠습니다.
제안 된 속성이 코드에 추가되었습니다. 여전히 정확한 오류를 생성합니다. – GWLlosa