簡體   English   中英

通過從c#COM可見類中的c#方法引用返回vb變體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM