C# Array of Struct in Struct Hilfe!

Gast #849204
Lesenswert?
• ▲
▼
typedef struct
{
CLS_NUMBER_OF_SWITCHES  numOfLogins;
  CLS_AGENT_ACTIVITY  pAgentInfo[5];
}
  CLS_AGENT_INFO, *PCLS_AGENT_INFO;

typedef struct
    {
        CLS_SWITCH_ID       lSwitchId;      //  Identification of switch 
where agent is defined
        CLS_AGENT_ID        lAgentId;       //  A number identifying the 
trader/agent
        CLS_STATION_EX      cStation;       //  Directory/Extension or 
desk number for station/turret
        CLS_AGENT_STATE     lNewState;      //  A code indicating the 
new agent state
  CLS_AGENT_NAME      cAgentName;
  char                Reserved[79];
    }
        CLS_AGENT_ACTIVITY,*PCLS_AGENT_ACTIVITY  ;


[StructLayout(LayoutKind.Sequential)]
      public struct CLS_AGENT_ACTIVITY
    {
      public Int32    lSwitchId;
      public Int32        lAgentId;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=21 )]
      public string    cStation;
      public Int32    lNewState;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=21 )]
      public string    cAgentName;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=80 )]
      public string    Reserved;
    }
    [StructLayout(LayoutKind.Sequential)]
      public struct CLS_AGENT_INFO
      {
        public  Int32 numOfLogins;
        public  CLS_AGENT_ACTIVITY LoggedAgents;

Hab hier zwei Structuren in C++ welche für Funktionsaufrufe verwendet 
werden und in einer DLL eingebunden sind.
Ich muß nun diese Strukturen in C# definieren und verwenden, das 
funktioniert nicht 100%.
Wie definiere ich das Array mit 5 Strukturen pAgentInfo[5] in der 
Struktur CLS_AGENT_INFO in C# ?
Ich bekomm es nur hin da eine Struktur hinzubiegen, das Array schaff ich 
nicht. HILFE!!

Für jede Hilfe bin ich vorab sehr dankbar, hab im Internet nichts 
gefunden.

Gruss
Thomas
#850009
Lesenswert?
• ▲
▼
Hi Thomas!

Versuche es doch mal damit:
1
    public struct CLS_AGENT_INFO {
2
        public Int32 numOfLogins;
3
        public CLS_AGENT_ACTIVITY[] LoggedAgents;
4

5
        public CLS_AGENT_INFO( Int32 numOfLogins ) {
6
            this.numOfLogins = numOfLogins;
7
            LoggedAgents = new CLS_AGENT_ACTIVITY[5];
8
        }
9
    }
Der Hintergrund ist folgender: In C# werden structs fast wie Klassen 
behandelt. Du kannst also auch Konstruktoren für structs definieren, in 
manchen Fällen musst Du sogar Konstruktoren verwenden.

Gruß
Markus

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.