過去に 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;
}
現時点での使用方法の 1 つは、OleDbReader の結果をハッシュテーブルに変換することですが、近いうちにより多くのソース タイプが必要になると予測しています。