C++ と C# の間の通信に COM を使用しています。
私はC#で次のクラスを持っています
電子メールアドレス
/// <summary> /// Email Address /// </summary> public class EmailAddress { /// <summary> /// SMTP Address /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Address; /// <summary> /// Name /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Name; }
メールボックス
/// <summary> /// MailBox Entity /// </summary> public struct MailBoxEntity { /// <summary> /// SMTP Address /// </summary> [MarshalAs(UnmanagedType.BStr)] public string SMTPAddress; /// <summary> /// Mailbox Display Name /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Name; /// <summary> /// Mailbox Server Name /// </summary> [MarshalAs(UnmanagedType.BStr)] public string sServerName; }
EmailEntity (各フィールドのプロパティを含む IEmailEntity をまだ実装していません)
/// <summary> /// Class for Email Entity /// </summary> public class EmailEntity : IEmailEntity { /// <summary> /// BccRecipients /// </summary> [MarshalAs(UnmanagedType.ByValArray)] public EmailAddress[] BccRecipients; /// <summary> /// Body /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Body; /// <summary> /// CcRecipients /// </summary> [MarshalAs(UnmanagedType.ByValArray)] public EmailAddress[] CcRecipients; /// <summary> /// Culture /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Culture; /// <summary> /// DateTimeCreated /// </summary> [MarshalAs(UnmanagedType.BStr)] public string DateTimeCreated; /// <summary> /// DateTimeReceived /// </summary> [MarshalAs(UnmanagedType.BStr)] public string DateTimeReceived; /// <summary> /// DateTimeSent /// </summary> [MarshalAs(UnmanagedType.BStr)] public string DateTimeSent; /// <summary> /// FromAddress /// </summary> [MarshalAs(UnmanagedType.BStr)] public string FromAddress; /// <summary> /// FromName /// </summary> [MarshalAs(UnmanagedType.BStr)] public string FromName; /// <summary> /// HasAttachments /// </summary> [MarshalAs(UnmanagedType.BStr)] public string HasAttachments; /// <summary> /// Id /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Id; /// <summary> /// Importance /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Importance; /// <summary> /// LastModifiedName /// </summary> [MarshalAs(UnmanagedType.BStr)] public string LastModifiedName; /// <summary> /// LastModifiedTime /// </summary> [MarshalAs(UnmanagedType.BStr)] public string LastModifiedTime; /// <summary> /// MimeContent /// </summary> [MarshalAs(UnmanagedType.BStr)] public string MimeContent; /// <summary> /// ParentFolderId /// </summary> [MarshalAs(UnmanagedType.BStr)] public string ParentFolderId; /// <summary> /// Original Mailbox /// </summary> [MarshalAs(UnmanagedType.BStr)] public MailBoxEntity OriginalMailBox; /// <summary> /// ParentFolderName /// </summary> [MarshalAs(UnmanagedType.BStr)] public string ParentFolderName; /// <summary> /// ReceivedByAddress /// </summary> [MarshalAs(UnmanagedType.BStr)] public string ReceivedByAddress; /// <summary> /// ReceivedByName /// </summary> [MarshalAs(UnmanagedType.BStr)] public string ReceivedByName; /// <summary> /// Size /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Size; /// <summary> /// Subject /// </summary> [MarshalAs(UnmanagedType.BStr)] public string Subject; /// <summary> /// ToRecipients /// </summary> [MarshalAs(UnmanagedType.ByValArray)] public EmailAddress[] ToRecipients; }
C# の関数から返されたEmailEnity オブジェクト(C++)の配列にアクセスして、EmailEntity クラスのフィールドを読み取る方法を教えてください。EmailEntity クラスには、それ自体がオブジェクトの配列である EmailAddress[] などのメンバーが含まれていることに注意してください。EmailEntity のフィールドにアクセスするためのプロパティを含むインターフェイス IEmailEntity を実装し、それを使用して C++ のフィールドにアクセスすることを計画していました。それは正しい方法ですか?
C++ で EmailAddress (EmailAddress[] ToRecipients) の配列のような複雑なフィールド メンバーにアクセスするにはどうすればよいですか。
提案してください。
ありがとう