带有 VB6/asp 错误的 C# COM 对象

2024-03-20

我正在尝试通过 COM 公开 C# 类库,以便我可以在经典的 ASP 网站中使用它。

我用过 sn - k、regasm 和 gacutil。我现在能做的就是回显字符串。

以类变量作为输入的方法对我不起作用。即我的测试方法 EchoPerson(Person p) 返回名字和姓氏的字符串不起作用。我收到运行时错误 5 - 无效的过程调用或参数。

请让我知道我缺少什么。而且我在 VB 中没有智能感知。我需要做什么才能让智能感知正常工作。

下面是我的C#测试代码

namespace MrdcToFastCom
{

    public class Person : MrdcToFastCom.IPerson
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }


    public class ComTester : MrdcToFastCom.IComTester
    {
        public string EchoString(string s)
        {
            return ("Echo: " + s);
        }

        public string Hello()
        {
            return "Hello";
        }


        public string EchoPerson(ref Person p)
        {
            return string.Format("{0} {1}", p.FirstName, p.LastName);
        }

    }

}

和VB6调用

Private Sub btnClickMe_Click() 

    Dim ct
    Set ct = New MrdcToFastCom.ComTester

    Dim p
    Set p = New MrdcToFastCom.Person
    p.FirstName = "Joe"
    p.LastName = "Test"

    Dim s
    s = ct.EchoPerson(p) ''#Error on this line
    tbx1.Text = s


End Sub

这是您应该考虑使用的模式:-

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("B4CAC74B-ADE0-4ac7-AD0E-26E6439F9CF7")]
public interface _IPerson
{
    string FirstName { get; set; }     
    string LastName { get; set; }     
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("A3C553DC-A348-43e4-957A-F94D23E3300E")]
public class Person :  _IPerson      
{      
    public string FirstName { get; set; }      
    public string LastName { get; set; }      
}

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("4B527235-6738-4853-BEA0-FB3087C89291")]
public interface _ComTester
{
     string EchoPerson(Person person);
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("C753D72B-C802-44ae-946A-E3F6D7C5D14B")]
public class ComTester : _ComTester
{
    public string EchoPerson(Person person)
    {
        return person.FirstName + " " + person.LastName;
    }
}

这种方法使您可以更好地控制 .NET 组件公开的 COM 接口。仅公开由接口定义的成员以供 COM 客户端使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 VB6/asp 错误的 C# COM 对象 的相关文章

随机推荐

  • Websocket 服务器端点出现错误

    这是文件 我收到编译错误import javax websocket行和在 serverEndpoint websocket 为什么不带注释 package pack exp import java io IOException impor
  • 将值添加到 DynamicTimeSeriesCollection 中的指定系列

    该程序每秒都会接收数据并将它们绘制在时间序列图表上 然而 一旦我创建了两个系列 我就无法为其添加新的价值 它仅显示一条直线 如何将数据附加到指定的系列 IE YYY 基于此example https stackoverflow com a
  • 使用 OpenCV 级联分类器与交通标志

    我正在尝试检测一些这样的交通标志 https i stack imgur com yOTZb jpg https i stack imgur com yOTZb jpg 我设法隔离了交通标志 目前它始终是圆形的 http image noe
  • 如何获取进程的内存使用百分比?

    使用以下代码 我可以获得给定进程的内存消耗 以 MiB 为单位 def memory usage psutil return the memory usage in MB import psutil process psutil Proce
  • iOS上传.pdf文件

    如何使用 iOS 版 Objective C 上传文件 我真的被困住了 我可以使用 UIImagePickerController 上传图像 但是 pdf doc 文件有这样的功能吗 提前谢谢了 不 没有 假设您的意思是属于 iBooks
  • Yii2 环境文件夹背后的想法是什么以及如何使用它?

    我已经通读过 Yii2 文档好几次了 我也用谷歌搜索 但还没有找到任何有用的东西 问题是我不理解环境文件夹的概念 请让我解释一下 我可以在 Git 中使用分支 用于开发 登台和生产 local conf文件会被 Git 忽略 并且不会以任何
  • 为 cocoapod 依赖项指定预处理器宏,而不分叉它

    我有一个 Xcode 工作区 由Cocoapod对外部库有一些依赖 其中之一 MTDates https github com mysterioustrousers MTDates 延伸NSDate and NSDateComponents
  • Gravatar:如何知道用户是否拥有真实图片

    我已经在我的网站上使用了头像服务 但我想知道用户是否上传了他们的照片 有办法知道这一点吗 构造URL时 使用参数d 404 如果用户未设置图片 这将导致 Gravatar 返回 404 错误而不是图像 如果您使用从 gravitar 站点链
  • 将整数转换为单词

    为了设计数据可视化样式 我希望能够使用单词显示整数 例如 两千一十七 而不是数字 例如2017 作为我正在寻找的示例 这里有一个适用于小标量整数的快速函数 int to words lt function x index lt as int
  • AppFabric 缓存 - 对象的序列化和反序列化要求是什么?

    问题 当缓存类的实例并立即将其从缓存中取出时 我取回了对象 它不为空 但其所有属性 字段均为空或默认值 cacheHelper PutInCache testModuleControlInfoOne mci mci has populate
  • 在 JavaScript 中解析 ISO 8601 日期

    我需要有关将具有以下结构的 ISO 8601 日期转换为 JavaScript 的帮助 提示 CCYY MM DDThh mm ssTZD 我想像这样设置日期格式 January 28 2011 7 30PM EST 我想让这个解决方案尽可
  • Jquery UI 自动完成图像

    我在这段代码中遇到错误 有谁能够帮助我 h4 search h4
  • 使用平均成本基础法计算成本

    我有这个 pandas 数据框 我按 股票代码 升序排列 然后按 日期 和 类型 排序 它表示相对于 股票代码 列中股票的交易 Type Ticker Qty Price Amount TotalQty Date 2020 03 01 Bu
  • 操作员之间的气流和数据传输

    我是 Airflow 新手 对 Airflow 及其处理器有疑问 当处理器产生输出时 如何将该输出作为输入移动到下一个处理器 有一个名为 nifi 的软件 它将中间输出存储到流文件中 据我所知 airflow 中没有这样的软件 那么这是怎么
  • 如何在自己的自定义解串器中使用一些 Jackson 解串器?

    我正在努力解决问题中提到的问题 我需要创建一些自定义反序列化器 它或多或少是从标准反序列化器进行类型转换的 原因是ZonedDateTime正在为我的输入工作 但我不想将类型更改为ZonedDateTime 但保留LocalDateTime
  • keras 指标在训练期间不同

    我已经实现了一个基于 SIM 的自定义指标 当我尝试代码时它可以工作 我已经使用张量和 np 数组实现了它 并且都给出了相同的结果 然而 当我开始拟合模型时 返回的值比加载训练生成的权重并应用相同函数时得到的值要高得多 我的职能是 def
  • 通过 SSH 隧道的 PostgreSQL

    我想使用 RazorSQL 连接到在远程服务器上运行的数据库 我使用以下命令在本地主机上创建 SSH 隧道 ssh L 1111 remote server com 5432 email protected cdn cgi l email
  • 是否可以将目录从 Google Compute Engine 实例复制到我的本地计算机?

    使用 scp 我可以添加 r标志通过 ssh 将目录下载到我的本地计算机 使用时 gcloud compute scp r 它说 r 不是可用的选项 如果没有 r 我会收到一条错误消息 指出我的源路径是一个目录 这意味着我只能下载单个文件
  • 如何通过按钮选择或不选择剑道网格

    我有一个网格 在网格定义中启用了选择模式 selectable true 我需要通过按钮使网格不可选择 我尝试了这个 但它不起作用 disableKendoGrid click function var grid myGrid data k
  • 带有 VB6/asp 错误的 C# COM 对象

    我正在尝试通过 COM 公开 C 类库 以便我可以在经典的 ASP 网站中使用它 我用过 sn k regasm 和 gacutil 我现在能做的就是回显字符串 以类变量作为输入的方法对我不起作用 即我的测试方法 EchoPerson Pe