gpt4 book ai didi

c# - 将参数传递给 COM 接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:57 25 4
gpt4 key购买 nike

我正在尝试编写一个小型 c# 应用程序来测试 COM 接口(interface)(也是用 c# 编写的)。该接口(interface)包含一个接受单个字符串作为参数的方法。

我在下面包含了几个代码示例。我使用以下方法执行调用:

public class CreateObject
{
private Type comType;
public object comObject;

public CreateObject(string ProgID)
{
comType = Type.GetTypeFromProgID(ProgID);
comObject = Activator.CreateInstance(comType);
}
public void Execute(string Method, params object[] Parameters)
{
comType.InvokeMember(Method, BindingFlags.InvokeMethod, null, comObject, Parameters);
}
}

然后我使用:

String sParam = "test";
CreateObject obj = new CreateObject("Namespace.Class");
obj.Execute("Method", sParam );

在 COM 内部,界面如下所示:

[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxx")]
public interface Interface
{
void Method(String sParam);
}

方法(字符串)的简化实现:

[ClassInterface(ClassInterfaceType.None), Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"), ProgId("Namespace.Class")]
public class Class: Interface
{
public void Method(String sParam)
{
XmlDocument xml = new XmlDocument();
xml.LoadXml(sParam);
XmlWriter writer = XmlWriter.Create("result.xml");

*** other code used to create the xml ***
}
}

即使没有返回任何错误,COM 实际上似乎并没有执行。但是,当我从测试应用程序和 COM 中取出字符串参数时,我确实得到了正确的输出(COM 接口(interface)在光盘上创建了一个 XML 文件)。任何人都可以看到我使用参数的错误吗?

最佳答案

我发现类库不使用 app.config,这意味着我的 COM 无法访问它的任何设置(连接字符串等)并抛出错误,直到我返回它们时我才看到作为 try/catch 的一部分。

所以答案是在这种情况下使用参数是正确的。

关于c# - 将参数传递给 COM 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12265505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com