gpt4 book ai didi

c# - 如何使 .NET COM 包装器通用

转载 作者:行者123 更新时间:2023-12-03 08:07:26 25 4
gpt4 key购买 nike

我认为这是一个工厂/提供商类型的故事,但我不确定如何描述我的问题。事情是这样的。

InstallShield 有一个 COM 自动化接口(interface),他们在每个版本中都会更改它的名称。如果是 VBScript 我会说

set project = CreateObject("ISWiAuto15.ISWiProject) ' InstallShield 2009
set project = CreateObject("ISWiAuto16.ISWiProject) ' InstallShield 2010

一旦我有了一个项目对象,我就可以做类似的事情

project.OpenProject( filePath, readOnly )

在 C# .NET 3.5 中,我添加了 COM 引用并执行相同的操作,只不过现在我与该类紧密耦合。我希望能够做类似的事情

var project = CreateProjectObject( typeof ISWiAutoXX.ISWiProject )

但我不知道如何做到这一点,因为似乎没有任何共享接口(interface)可供转换。

我运气不好还是有办法处理此类问题?

最佳答案

如果您仅使用 .NET 3.5,最好的选择可能是编写自己的接口(interface)来公开所需的确切功能,然后使用 IS 2009 和 IS 2010 实现接口(interface)。这允许您使用任何内部实现,并创建工厂方法(或使用DI)来构造对象。

不幸的是,这确实需要大量的简单传递(仅调用 COM 对象的包装方法)。然而,它是一种非常强大、面向 future 的操作方式,让您可以使用简单、类型安全的 API。

关于c# - 如何使 .NET COM 包装器通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419764/

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