J'ai un projet dans lequel j'utilise System.Runtime.InteropServices pour définir une structure de la manière suivante de telle sorte qu'elle soit empaquetée aux limites de byte et prête à être envoyée à un port série et de là à un système embarqué. (Noms commerciaux sensibles ont été supprimés)Comment manipuler des données dans des structures compressées en utilisant une classe proxy?
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);
}
}
Ce que je suis en train de faire est de faire est d'utiliser le constructeur d'attribuer des références à ces champs à une classe proxy à l'aide
Field1 = new UTCTime(ref this.rawdata.Field1)
pour envelopper le données brutes dans la structure à une classe qui permet des opérations plus avancées avant de calculer l'entier de 32 bits qui correspond à l'heure. ma classe proxy est
public class UTCTime : Field
{
private Uint32 dataReference;
public UTCTime(ref rawData)
{
// code to do reference assignment here?
}
}
Est-il possible d'avoir DataReference comme une référence à Champ1 telle que ma classe proxy est capable de manipuler les données dans la structure emballée? Merci d'avance, Thomas.