Безымянный указатель на структуру - C#
Формулировка задачи:
Есть необходимость передавать в метод параметр ссылочного типа
но вся проблема в том что в методе его необходимо закрепить оператором fixed
но увы как всегда не всё складывается как хотелось бы.
В метод будет передаваться только первый элемент массива структур.
но первым в структуре может быть и не Single, а например byte, если бы в структуре первым был всегда один и тот же базовый тип, то ссылку на него получить легко void METOD(ref Single data) и это работает, проблема
как раз в том что нужно чтоб метод принимал параметр любого базового типа, не зная что за тип на самом деле.
Ну как то так в двух словах, помогите кто может!!
void METOD(ref void data) или void METOD(ref ValueType data)
void METOD(ref ValueType data)
{
fixed(ValueType* ptr = &data)
{
//передача в неуправляемую библиотеку
}
}struct Data
{
public Single;
public Single;
}
Data[] ARR = new Data[10];
METOD(ref ARR[0])
Перегрузку метода не предлагать.
Решение задачи: «Безымянный указатель на структуру»
textual
Листинг программы
[StructLayout(LayoutKind.Explicit)]
public struct tioController
{
[FieldOffset(0)] public Byte[] All;
[FieldOffset(0)] public UInt16 Pwd;
[FieldOffset(2)] public UInt16 NOb;
[FieldOffset(4)] public UInt32 Tim;
[FieldOffset(8)] public UInt16 Xco;
[FieldOffset(12)] public UInt16 Yco;
[FieldOffset(16)] public Byte InP;
[FieldOffset(17)] public Byte Out;
[FieldOffset(18)] public UInt16 An0;
[FieldOffset(20)] public UInt16 An1;
[FieldOffset(22)] public UInt16 An2;
[FieldOffset(24)] public UInt16 Cn1;
[FieldOffset(26)] public UInt16 Cn2;
[FieldOffset(28)] public UInt16 Cn3;
[FieldOffset(30)] public UInt16 Cn4;
[FieldOffset(32)] public UInt16 An3;
[FieldOffset(34)] public UInt16 CSp;
[FieldOffset(36)] public UInt16 MSp;
[FieldOffset(38)] public Byte Sta;
[FieldOffset(39)] public Byte Mod;
[FieldOffset(40)] public UInt16 Cou;
[FieldOffset(42)] public UInt16 Se2;
[FieldOffset(44)] public UInt16 Se3;
}