Маршаллинг массива пользовательского типа из C++ DLL
От: Xak.PC Россия  
Дата: 14.07.09 10:52
Оценка:
Здравствуйте.
У меня есть следующая струткура

struct TMeteoParam
{
    unsigned char SensorNum;  
    unsigned char ParCode;     
    unsigned char ParErr;      
    float ParData;             
};


struct TMeteoData
{
    unsigned long MeteoID;        
    METEO_TIME MeteoTime;        
    unsigned long ParCnt;        
    TMeteoParam ParArray[255];
};

Каким образом мне создать объект этого типа в C# приложении? Насколько я знаю необходимо выполнить маршаллинг, но как его делать для массива пользовательского типа?

        [StructLayout(LayoutKind.Sequential)]
        private struct TMeteoParam
        {
            public Char ParCode;    
            public Char ParErr;        
            public float ParData;    
        };


        [StructLayout(LayoutKind.Sequential)]
        private struct TMeteoData
        {
            public UInt32 MeteoID;           
            public METEO_TIME MeteoTime;    
            public UInt32 ParCnt;            
            [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U8, SizeConst = 255)] // Это если массив известного типа, а в моем случае как?
            public byte[] ParArray;    

        };

Очень жду советов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.