我有一个采用存储过程名称和 Microsoft.VisualBasic.Collection 的方法?我正在引用一个 vb 项目,在该项目中我必须将一个集合传递给此方法,但我当前所在的项目是在 c# 中,所以我不清楚我可以将什么传递给该方法?
这是 vb 调用:
public void CallStoredProc(string spName, Microsoft.VisualBasic.Collection params);
在我的 C# 应用程序中,我需要将此称为将适当的 C# 对象传递给参数。
最佳答案
一种选择是直接使用 C# 中的 Collection
类型。这是 Microsoft.VisualBasic.dll
程序集中的标准类型,可用于任何 .Net 语言。
标准 BCL 中最接近的集合是 Hashtable
。 Hashtable
和 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 项目
关于c# - 什么相当于 c# 中的 Microsoft.VisualBasic.Collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115194/