我有一个方法,它需要一个存储过程名称和一个Microsoft.VisualBasic.Collection http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.collection.aspx?我正在引用一个 vb 项目,其中我必须将集合传递给此方法,但我当前所在的项目是 c# 中的,所以我不清楚我可以将什么传递到该方法中?
这是 vb 调用:
public void CallStoredProc(string spName, Microsoft.VisualBasic.Collection params);
在我的 C# 应用程序中,我需要将其称为传递给参数的适当 C# 对象。
一种选择是简单地使用Collection
直接从 C# 键入。这是标准类型Microsoft.VisualBasic.dll
汇编语言,可以在任何 .Net 语言中使用。
标准 BCL 中最接近的集合是Hashtable
。之间转换Hashtable
and Collection
应该相当简单
例如
using VBCollection = Microsoft.VisualBasic.Collection;
...
public static VBCollection ToVBCollection(this Hashtable table) {
var collection = new VBCollection();
foreach (var pair in table) {
// Note: The Add method in collection takes value then key.
collection.Add(pair.Value, pair.Key);
}
return collection;
}
注意:但这不是直接映射。这Collection
类型支持许多操作Hashtable
不喜欢:之前和之后的值、按数字或键索引等...我的方法是在整个应用程序中一致地使用一种类型,并适当地更改 C# 或 VB 项目
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)