zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    go语言从零学起(三) -- chat实现的思考
    go语言从零学起(二)--list循环删除元素(转载)
    go语言从零学起(一) -- 文档教程篇
    Spring框架事务支持模型的优势
    Thymeleaf
    社保到底是多交好,还是少交好?
    使用静态工厂方法而不是构造器
    EJB、RMI、XMLRPC、Hessian、Thrift 、Protobuf
    MySQL存储过程
    MySQL常用功能语句分类总结
  • 原文地址:https://www.cnblogs.com/tianya/p/952083.html
Copyright © 2011-2022 走看看