vb 调用c#做的com 组件 1:建立c# 项目 (注意项目必须含有接口,其他类应该实现该接口,才可以在其他语言中用该com组件) 2:将 AssemblyInfo.cs 里的 [assembly: ComVisible(false)] 改为 true 3:项目-属性-生成里将:为com interop 注册 选种 4:生成后就可以在其他语言中引用或该组件。 一般代码如下: using System; using System.Collections.Generic; using System.Text; namespace UseMethod { public interface IField { void SetField(UseMethod.Fields f); UseMethod.Fields GetField(); UseMethod.Fields GetSetField(UseMethod.Fields f); int Add(int i, int j); } public class FieldAction:IField { public FieldAction() { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } public void SetField(UseMethod.Fields f) { Fields f1 = new Fields(); f1.city = "city"; f1.country = "country"; f1.myCity = "nycity"; f1.myName = "myName"; } public UseMethod.Fields GetField() { Fields f1 = new Fields(); f1.city = "city"; f1.country = "country"; f1.myCity = "nycity"; f1.myName = "myName"; return f1; } public UseMethod.Fields GetSetField(UseMethod.Fields f) { return f; } public int Add(int i, int j) { return i + j; } } public class Fields { public string city; public string country; public string myName; public string myCity; } } 当然可以有其他复杂的类,但是在操作时,最好用强类型,以便于识别! 将生成的UseMethod.tlb 即.tlb文件引用到vb的项目中,然后 在vb6中调用: Private Sub cmdObject_Click() Dim meth As UseMethod.IField Dim met As UseMethod.FieldAction Dim result As UseMethod.Fields Dim fi As UseMethod.Fields Set fi = New UseMethod.Fields Set met = New UseMethod.FieldAction With fi .city = "city" .country = "country" .myName = "myName" .myCity = "MYcITR" End With Set meth = met txtStr.Text = meth.Add(8, 9) Set result = meth.GetSetField(fi) txtInOut.Text = result.city & result.country //注意这里的属性应和c#里定义的一样 MsgBox "soapClient3.AddressName", vbDefaultButton1, "提示" End Sub
vb 调用c#做的com 组件
最新推荐文章于 2023-02-22 15:42:37 发布