キーを使って私の比較関数にアクセスしたいと考えています。これは私が試みたものです。私は自分の問題は辞書の値の型を宣言していると思います。辞書に比較関数を保存するにはどうすればよいですか?
internal static int CompareUsersByEmail(MembershipUser a, MembershipUser b)
{
// imagine null checking happening here.
return string.Compare(a.Email, b.Email, true);
}
public static void Sort(List<MembershipUser> list, string expression) {
// I can do this
list.Sort(CompareUsersByEmail);
// but not this
Dictionary<string, Func<MembershipUser, MembershipUser, int>> compareFns;
compareFns = new Dictionary<string, Func<MembershipUser, MembershipUser, int>>();
compareFns["Email"] = CompareUsersByEmail;
list.Sort(compareFns[expression]); // where expression would be "Email"
}
これは可能ですか?私はそれが、その後なしその他の変更で動作します信じて
Dictionary<string, Comparison<MembershipUser>> compareFns;
:に
私は "これは可能です"という質問が大好きです...試してみましたか?あなたは持っていると言っていますが、何が間違っているのかを特定していません。 – Jamiec
'compareFns [expression]'の値が間違っているため、最後の行にビルドエラーが発生しました。 – lincolnk