加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将字符串数组从VB6传递到C#.net

发布时间:2020-12-17 07:20:08 所属栏目:百科 来源:网络整理
导读:如何通过COM Interop将VB6字符串数组[假设,s =数组(“a”,“b”,“c”,“d”)]传递给C#.Net? 我试图将C#字符串数组传递给VB,将VB字符串数组传递给C#,如下所示C# – VB工作正常但其他方式(VB = C#)给出一个编译错误,称为“函数或接口标记为受限制,或者functi
如何通过COM Interop将VB6字符串数组[假设,s =数组(“a”,“b”,“c”,“d”)]传递给C#.Net?

我试图将C#字符串数组传递给VB,将VB字符串数组传递给C#,如下所示C# – > VB工作正常但其他方式(VB => C#)给出一个编译错误,称为“函数或接口标记为受限制,或者function使用visual basic中不支持的自动化类型“.我的代码如下

C#

    public interface ITest   
    { 
         string[] GetArray();
         void SetArray(string[] arrayVal );
    }

    public class Test : ITest 
    {
        string[] ITest.GetArray() {                                //Working fine
            string[] stringArray = { "red ","yellow","blue" };
            return stringArray;
        }
    }

    void ITest.SetArray(string[] arrayVal) //Giving an issue
    {
       string[] stringArray1 = arrayVal;
    }

VB

Dim str As Variant
    Debug.Print ".NET server returned: "    
    For Each str In dotNETServer.GetArray      'dotNETServer=TestServer.Test
            Debug.Print str
    Next

    Dim arr(3) As String
    arr(1) = "Pahee"
    arr(2) = "Tharani"
    arr(3) = "Rathan"

    dotNETServer.SetArray (arr)         'This one causing the compile error which I mentioned earlier

更新:
::::::

We need to pass the array as reference in C#.在界面和方法中更改它

void SetArray(ref string[] arrayVal ); //ref added

解决方法

编组到适当的类型将解决您的问题.请注意下面的编组和ref关键字更改

void ITest.SetArray([MarshalAs(UnmanagedType.SafeArray,SafeArraySubType=VT_BSTR)] ref string[] arrayVal)
{
   string[] stringArray1 = arrayVal;
}

我根据你的代码和问题制作了这个解决方案,你无法从VB6中获取数据.如果以上解决方案对您不起作用,请尝试在此处查找适合您的应用程序的数组类型/子类型http://msdn.microsoft.com/en-us/library/z6cfh6e6(v=vs.110).aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读