【问题标题】:VBscript C# function call and assignment of returned value [duplicate]VBscript C#函数调用和返回值的赋值[重复]
【发布时间】:2022-01-15 23:11:34
【问题描述】:

我创建了一个用 C# 编写的 COM dll。它已成功注册,我正在尝试在 VB 脚本中访问它。我能够创建 COM 的对象并能够执行第一个方法调用。

当我尝试使用第一个方法调用返回的对象执行第二个方法调用 (msg = app.getSubDomainConn(domain)) 时,我收到以下错误。我已经发布了 VBscript 和 C# 代码。

有人可以帮忙吗?

错误:无效的过程调用或参数:“getValidConnectionMsg”
代码:800A0005
来源:Microsoft VBScript 运行时错误

dim app 
Set app  = CreateObject("myCOM.myObject.")

app.uri=<URI>
app.username=<User>
app.password=<pwd>

Dim domain
Set domain = app.getDomain()
domain.ok = true;

wscript.echo domain.name

dim msg 
msg = app.getSubDomainConn(domain)

这里是 C# 代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace myCOM
{

    
    public class myObject
    {
        public String uri = "";
        public String username = "";
        public String password = "";

        public IDomain getDomain()
        {
            String msg = "";
             IDomain domain = null;
            try
            {

               
                // Get domain Connection
                IConnection conn = Factory.Connection.GetConnection(uri);
                UserCredentials creds = new UsernameCredentials(username, password);

                // Get domain.
                domain = Factory.Domain.Get(conn);
                

            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.ToString());
            }
            return domain;
        }



        public String getValidConnectionMsg(IDomain domain)
        {
            String isDomainAvailable = "Not Available";
            if (domain != null)
            {
                isDomainAvailable = domain.Name; 

            }

            return isDomainAvailable;

        }

    }

}

【问题讨论】:

  • have been asked在这个问题的previous incarnation下:“你的代码中是否有getValidConnectionMsg?”
  • 是的 getValidConnectionMsg 是我的 C# 代码的一部分。我已经在我的帖子中给出了该代码。
  • 错误来自 VBScript。您没有从 VBScript 调用 getValidConnectionMsg,因此您不会收到该错误。相反,您从 VBScript 调用 getSubDomainConn,它甚至没有作为方法出现在 myObject 中。这就是为什么你被问到,getValidConnectionMsg 是否在你的代码中。
  • 为什么要删除之前的问题,而不是只删除editing it?删除问题意味着所有 cmets 都将丢失。

标签: c# vbscript com


【解决方案1】:

问题在于 VB 脚本变体数据类型只考虑对象。我不得不更改 C# 代码。而不是接受它作为一个 IDomain 对象,它应该是一个对象类型的参数。 而不是下面

 public String getValidConnectionMsg(IDomain domain)
        

修改后的代码是

public String getValidConnectionMsg(Object d)
{
IDomain domain = (IDomain)d;
.
.
.

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 2012-12-29
  • 2016-08-14
  • 1970-01-01
  • 2018-05-14
  • 2015-06-13
  • 2011-03-09
相关资源
最近更新 更多