roker002
Commander
- Registriert
- Dez. 2007
- Beiträge
- 2.114
Theoretisch gesehen sollte dieser Aufruf ja funktionieren oder?
Aber es tut nicht. Offenbar kann GCHandle nicht mit generischen Daten umgehen. Ist das richtig? Heißt, ich kann diesen Aufruf nicht benutzen oder?
Ich brauche einen Struct der auch Null Werte beinhaltet. Gibt es einen anderen Weg? Man kann auch alle Daten per Hand zu definieren, aber das ist echt blöd, wenn man größere Datenstrukturen hat.
Reflection ist auch kein weg, da das Programm auf Performance setzt.
Danke
Code:
[StructLayout(LayoutKind.Explicit)]
public struct Test
{
[MarshalAs(UnmanagedType.U2)]
[FieldOffset(0)]
public Int16? Var1;
[MarshalAs(UnmanagedType.U2)]
[FieldOffset(2)]
public Int16? Var2;
}
....
var data = new Byte?[4] { 0, 23, null, null };
var TestObj = (Test)Marshal.PtrToStructure(GCHandle.Alloc(data.ToArray(), GCHandleType.Pinned).AddrOfPinnedObject(), typeof(Test));
....
Aber es tut nicht. Offenbar kann GCHandle nicht mit generischen Daten umgehen. Ist das richtig? Heißt, ich kann diesen Aufruf nicht benutzen oder?
Ich brauche einen Struct der auch Null Werte beinhaltet. Gibt es einen anderen Weg? Man kann auch alle Daten per Hand zu definieren, aber das ist echt blöd, wenn man größere Datenstrukturen hat.
Reflection ist auch kein weg, da das Programm auf Performance setzt.
Danke
Zuletzt bearbeitet: