Я хотел бы создать объект класса C# в C++ и установить его поля-члены. Хотя я могу создать объект класса C++, я не могу получить доступ к его членам и устанавливать значения полей элемента.Создание экземпляров класса C# в C++ с использованием COM
/// <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);
Я хочу, чтобы получить доступ к членам класса AQSEntity в C++. Но я не могу получить к ним доступ.
pTest1-> sQueryString
дает ошибку.
'sQueryString': не является членом 'AsigraExchange :: IEntity' C: \ Projects \ COM \ COMClient \ COMClient.cpp 168
Может кто-нибудь предложить, пожалуйста, где я не прав.
Спасибо, Gagan
Вашего интерфейса полностью пуст. Добавьте к нему свойства и методы. Не добавляйте поля. –
Существуют и другие классы, реализующие IEntity. Если я добавлю свойства и методы в IEntity, эти классы не смогут наследовать от IEntity. – Gags