У меня есть проект, в котором я использую System.Runtime.InteropServices для определения структуры следующим образом, так что она упакована в байтовые границы и готова к отправке на последовательный порт и оттуда во встроенную систему. (важные для бизнеса имена были удалены)
public class ControlCommandClass
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ControlCommandData
{
public Uint32 Field1;
public Uint16 Field2;
public Sbyte Field3;
public Uint32 Field4;
}; // this struct is 11 bytes in memory!
private ControlCommandData rawdata;
public UTCTime Field1;
public ControlCommandClass()
{
this.Field1 = new UTCTime(ref this.rawdata.Field1);
}
}
То, что я пытаюсь сделать, это использовать конструктор для присвоения ссылок на эти поля прокси-классу, используя
Field1 = new UTCTime(ref this.rawdata.Field1)
, чтобы обернуть необработанные данные в структуре в класс, который позволяет выполнять более сложные операции перед вычислением 32-разрядного целого числа, соответствующего времени. мой прокси класс
public class UTCTime : Field
{
private Uint32 dataReference;
public UTCTime(ref rawData)
{
// code to do reference assignment here?
}
}
Есть ли способ использовать dataReference в качестве ссылки на Field1, чтобы мой прокси-класс мог манипулировать данными в упакованной структуре?
Спасибо заранее,
Томас.