How to pass in/out return VB Byte array from a COM Component written in C#

看到dudu分享的贴代码方法立刻就来试验一下,效果的确很好可惜我机器上只有Office XP,所以没有颜色了。

至于这段snippet嘛,使用来示范如何在VB6中调用一个.NET写的COM组件,并传入、传出以及返回一个ByteArray的。
其实写出来的代码很简单的,但当刚开始确实十分麻烦,因为我找不到.NET中对应的Attribute(主要是InAttribute, OutAttribute ,对应关键字in, out,ref和IDL定义间的关系。
我现在想想[return:MarshalAs()]这个属性可能也不需要加的。你可以试一试告诉我结果tongue_smile.gif


using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

using System.Runtime.InteropServices;

 

namespace expose_to_COM

{

     public interface IInfo

     {

 

         [

              return: MarshalAs(UnmanagedType.SafeArray)

         ]

         byte[] GetBytes(ref byte[] bytes);

     }

 

     [ClassInterface(ClassInterfaceType.None)]

     public class Class1: IInfo

     {

         public Class1()

         {

         }

 

         public byte[] GetBytes(ref byte[] bytes)

         {

              byte[] _bytes = new byte[]{0x30,0x31,0x32,0x00};

              return _bytes;

         }

     }

}

 

 

转载于:https://www.cnblogs.com/jonnyyu/archive/2004/02/19/1361.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值