• 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

  • 相关阅读:
    C语言培训06
    C语言培训07
    C语言培训10 (完结篇)
    c程序设计语言 读书笔记01
    Open Xml Sdk创建目录
    D3D管线中每个stage的含义
    关于 STL::list 保存对象的一些注意
    【转载】 MultiByteToWideChar和WideCharToMultiByte用法详解
    Oracle GoldenGate 11G同步配置
    Linux挂载大硬盘(大于2T)
  • 原文地址:https://www.cnblogs.com/tianya/p/952083.html
Copyright © 2020-2023  润新知