我想在 C++ 中创建一个 C# 类对象并设置其成员字段。虽然我能够创建一个 C++ 类对象,但我无法访问它的成员并设置成员字段值。
/// <summary>
/// Class for AQS Entity
/// </summary>
[ClassInterface(ClassInterfaceType.None)]
[Guid("70F12A44-B91D-474D-BD70-32B1ACE041D6")]
[ProgId("AQSEntity")]
public class AQSEntity : IEntity
{
public AQSEntity()
{
sRecoveryDBName = String.Empty;
arrSourceMailboxesEntity = null;
sQueryString = String.Empty;
}
[MarshalAs(UnmanagedType.BStr)]
public string sRecoveryDBName = string.Empty;
[MarshalAs(UnmanagedType.ByValArray)]
public MailBoxCollection arrSourceMailboxesEntity;
[MarshalAs(UnmanagedType.BStr)]
public string sQueryString;
}
并且 IEntity 类定义如下
[Guid("5C71057E-9FD9-47D5-B022-8D5F9C7007D3")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IEntity
{
}
在 C++ 中,
IEntity* pTest1 = NULL;
hr = CoCreateInstance(__uuidof(**AQSEntity**),NULL,CLSCTX_INPROC_SERVER,__uuidof(IEntity),(void**)&pTest1);
我想在 C++ 中访问 AQSEntity 类的成员。但我无法访问它们。
pTest1-> sQueryString
给出错误。
'sQueryString' : 不是'AsigraExchange::IEntity' C:\PROJECTS\COM\COMClient\COMClient.cpp 的成员 168
谁能建议我错在哪里。
谢谢,加根