【发布时间】:2011-11-24 13:06:06
【问题描述】:
我想我过去曾在 C++ 的上下文中问过这个问题(在我的问题历史中找不到它!!),解决方案是使用模板函数。由于 C++ 模板在编译时解析,它可以工作。但对于 C#,它不会。
public Hashtable ConvertToHashtable<T>(T source) where T has an index operator
{
Hashtable table = new Hashtable();
table["apple"] = source["apple"];
return table;
}
目前的一种用法是将 OleDbReader 中的结果转换为哈希表,但我预计很快需要更多的源类型。
【问题讨论】:
-
你必须为此使用反射。
-
C# 中的运算符没有泛型类型约束 - 这是 C# 中泛型的限制之一。
-
@Oded 你能写下你的评论作为答案吗?谢谢。