Я использую следующее определение для своей структуры:
[StructLayout(LayoutKind.Explicit)]
public struct NetworkMessage
{
[FieldOffset(0)]
public MessageType Type;
[FieldOffset(4)]
public bool GatewayMessage;
//AuthenticationRequest
[FieldOffset(5)]
public char[] AuthenticationUsername; //20 charachters long
[FieldOffset(13)]
public byte[] AuthenticationPasswordHash; // 16 bytes long
//Authntication result
[FieldOffset(5)]
public bool AuthenticationSuccess;
[FieldOffset(6)]
public char[] AuthenticationMessage;
}
Однако, когда я пытаюсь использовать этот тип, я получаю это сообщение об ошибке:
System.TypeLoadException: не удалось загрузить тип 'NetworkMessage' из сборки, поскольку он содержит поле объекта со смещением 5, которое неправильно выровнено или перекрыто полем не-объекта.
поле объекта означает, что каждый является значением, а другой является ссылкой?Могу ли я не смешивать это?
Любая помощь очень ценится.
Спасибо, Венату
РЕДАКТИРОВАТЬ: Извинения, я должен был быть более явным в том, что я намерен это как своего рода псевдо-союз,Перекрытие полей является намеренным, чтобы позволить мне использовать одну структуру в качестве нескольких типов сообщений, упрощая буферизацию и обход системы.Извините за путаницу