[英]return vb variant by reference from c# method in c# COM Visible class
我對COM接口沒有太多的經驗,我不得不創建一個包含方法DoStuff的COM Visible類,該方法將通過引用返回兩個VB Variant變量,它們實際上是vb long和vb字符串,但聲明為變體。
目前我有類似的東西:
public void DoStuff(string someString, int someInt, ref long refLong, ref string refString)
{
refLong = DesiredReturnLong;
refString = DesiredReturnString;
}
我遇到問題,因為調用COM接口的腳本希望返回VB變體。
我該怎么辦? 我認為我不能像這樣返回對象(最初的想法是將VB類型的Variants更改為VB.net中的對象
public void DoStuff(string someString, int someInt, ref object refLong, ref object refString)
{
...
}
方法簽名應該是什么樣?返回正確的值我該怎么做?
謝謝你的幫助
隨時嘗試:執行RegAsm.exe /tlb
生成.TLB文件,然后使用OleView.exe
進行查看。 對於像您這樣的方法簽名:
public void DoStuff(string someString, int someInt,
ref object refLong, ref object refString)
您應該看到相應的接口方法,如下所示:
HRESULT DoStuff([in] BSTR someString, [in] long someInt,
[in, out] VARIANT* refLong [in, out] VARIANT* refString)
VB變體返回時將對象轉換為所需的類型。 當從com使用VB 6類型時,一句話警告,我被long吸引住了,vb6 long是a。 凈int! 因此,盡管com對象的簽名很長,但實際上是32位帶符號整數值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.