繁体   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