同様の属性を持つ2つの無関係なオブジェクトのハッシュセットを取る関数を一般化する方法があるかどうかを調べようとしています。私は以下のいくつかのサンプルコードがあります。関数の一般化
private IList<IDictionary<string, string>> BuildDictionary(HashSet<ClassA> ClassA)
{
IList<IDictionary<string, string>> data = new List<IDictionary<string, string>>();
foreach (var a in ClassA)
{
Dictionary<string, string> aDictionary = new Dictionary<string, string>();
aDictionary.Add(a.Code, a.Code + "," + a.Name);
data.Add(aDictionary);
}
return data;
}
private IList<IDictionary<string, string>> BuildDictionary(HashSet<ClassB> ClassB)
{
IList<IDictionary<string, string>> data = new List<IDictionary<string, string>>();
foreach (var b in ClassB)
{
Dictionary<string, string> bDictionary = new Dictionary<string, string>();
bDictionary.Add(b.Code, b.Code + "," + b.Name);
data.Add(bDictionary);
}
return data;
}
このように明らかなように、コードから、二つのクラスが関連していないのが、彼らの両方がHashSetのであり、同様の属性(コードネーム)を含有します。私はジェネリックTを使用しようとしましたが、ジェネリッククラスTを作成していないために失敗しました。新しいクラスを作成せずにこの問題を回避する方法はありますか?
両方のクラスのインターフェイスはどうですか? – Pikoh
インターフェイスを実装できるように両方のクラスにアクセスできますか? – pstrjds
あなたは、クラスが "typeof"か "is"であるかどうかを確認するためにリフレクションを使用し、T:class " – Luther