我需要在我的C#app和另一个应用程序之间传递Scripting.Dictionary。我希望能够在我的C#app中创建和修改字典的实例。
我对Scripting.Dictionary和ActiveX一般都知之甚少。各种论坛建议我应该使用System.Type.GetTypeFromProgID()和System.Activator.CreateInstance()等函数来创建实例。不幸的是,这意味着它对我的其余代码来说是一个不透明的对象。
这真的是应该如何完成,还是有更好的方法?理想情况下,我想导入一个编译时类型,并像其他任何类型一样使用它。这可能吗?
This article建议我从供应商那里获得“元数据汇编” - 有没有人知道Scripting.Dictionary是否存在这样的汇编?
答案 0 :(得分:5)
我刚刚尝试了最简单的方法,它似乎有效:
在Visual Studio中向scrrun.dll添加COM引用(它应该显示在“添加引用”对话框的“COM”选项卡中),Visual Studio将自动为您创建互操作文件。然后,您可以编写如下代码:
Scripting.Dictionary d = new Scripting.DictionaryClass();
d.Add( ref myKey, ref myValue );
MyComType.Method( d );
如果您遇到任何问题,我可以发布更多示例,或者澄清一下。
答案 1 :(得分:0)
创建一个实现IDictionary的包装器字典类,它使用Scripting.Dictionary作为其内部存储实现。在.NET代码中使用包装器,并通过COM将内部Scripting.Dictionary传递给另一个应用程序。