我有和名为ISimpleCom的ATL简单对象接口。 该对象实现连接点。 我想知道为什么“普通”的COM方法参数必须带有前缀和属性,但事件方法没有?COM:方法参数属性总是需要的?
ISimpleCom方法:
[id(1)] HRESULT Calculate([in] VARIANT_BOOL a_bFireEvent, [out,retval] LONG* a_lTotalMarks);
_ISimpleComEvents方法(事件 “签名” 注 “a_lTotalMark” S参数是不归): [id(1)] HRESULT TotalMarks(LONG a_lTotalMarks);
Fire_TotalMarks(12); <-- will fire the event in my case to C# manage code
他们仍然应该归功于,它不清楚你如何使用向导。没有那么重要,[in]是默认的,并且始终应该是连接点,因为您不能指望实际订阅事件的客户端代码。 –
'[in]'和/或'[out]'必须在那里,否则编组人员不知道在派对之间的路上如何携带价值。 –
@RomanR。你会感到惊讶,但编组工作正常,没有为连接点方法参数设置任何属性。我不知道如何,但它的工作原理,即使对于更复杂的对象,如SAFEARRAY封送到托管代码(在我的情况下,C#)也可以正常工作! – JobNick