【问题标题】:Using Scripting.Dictionary from C#使用 C# 中的 Scripting.Dictionary
【发布时间】:2010-10-13 04:15:41
【问题描述】:

我需要在我的 C# 应用程序和另一个应用程序之间传递一个 Scripting.Dictionary。我希望能够在我的 C# 应用程序中创建和修改字典的实例。

总的来说,我对 Scripting.Dictionary 和 ActiveX 知之甚少。各种论坛建议我应该使用 System.Type.GetTypeFromProgID() 和 System.Activator.CreateInstance() 之类的函数来创建实例。不幸的是,这意味着它对我的其余代码来说是一个不透明的对象。

这真的是应该这样做还是有更好的方法?理想情况下,我想导入一个编译时类型,然后像任何其他类型一样使用它。这可能吗?

This article 建议我从供应商处获取“元数据程序集” - 有谁知道 Scripting.Dictionary 是否存在这样的程序集?

【问题讨论】:

    标签: c# com interop activex


    【解决方案1】:

    我刚刚尝试了最简单的方法,它似乎有效:

    在 Visual Studio 中添加对 scrrun.dll 的 COM 引用(它应该显示在“添加引用”对话框的 COM 选项卡中),Visual Studio 将自动为您创建互操作文件。然后您可以编写如下代码:

    Scripting.Dictionary d = new Scripting.DictionaryClass();
    d.Add( ref myKey, ref myValue );
    MyComType.Method( d );
    

    如果您对此有任何疑问,我可以发布更多示例,或者澄清一下。

    【讨论】:

    • 'scrrun.dll' 在 COM 类型库部分被称为 Microsoft Scripting Runtime 的条目。
    【解决方案2】:

    创建一个实现 IDictionary 并使用 Scripting.Dictionary 作为其内部存储实现的包装字典类。在您的 .NET 代码中使用包装器,并通过 COM 将内部 Scripting.Dictionary 传递给其他应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多