所以我有一個接口(IInterface1)公開爲ComVisible(true),ClassInterfaceType(ClassInterfaceType.None)。如何通過COM Interop訪問複雜對象的屬性?
我有該接口,丙氨酸的對象:
public interface IInterface1
{
Object1 object {get; set;}
}
對象一個也被標記有ComVisible特性(真),是在一個單獨的組件,ClassInterfaceType(ClassInterfaceType.None),看起來像這樣:
public interface IObject1
{
string MyProperty {get;set;}
}
在C#的是,我有下面的類:
public class Interface1 : IInterface1
{
public IObject1 Object1 {get;set;}
}
從非託管C++,我將如何訪問Interface1.Object1.MyProperty?我正在導入TLH raw_interfaces_only,可以CreateInstance我的Interface1類,並訪問Object1。如果我嘗試訪問Object1上的MyProperty,則會得到「不允許的不完整類類型指針」。
C++代碼的樣子:
Assembly1::Interface1Ptr interface1ptr;
HRESULT hrRetval = CoInitialize(NULL);
hrRetval = interface1ptr.CreateInstance(__uuidof(Assembly1::Interface1));
Assembly1::Object1 *object1;
hrRetval = interface1ptr.get_Object1(&object1);
這是我堅持:
hrRetval = object1->get_MyProperty(varToStore); // This doesn't work.
欣賞任何指針(HAR HAR)。