Sam*_*ham 1 c# generics extension-methods
我有以下扩展方法,并希望使它更通用,所以我不必为我们域中的每个类实现它.
public static IList<User> ToList(this DataTable table)
{
IList<User> users = new List<User>();
foreach (DataRow row in table.Rows)
users.Add(User.FromDataRow(row));
return users;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个令人沮丧的限制?
编辑:下面的段落是bollocks,但我保留它,所以其中一个答案对未来的读者有意义:
用户以及我的其他类实现IDataModel
. IDataModel
只需要1种方法FromDataRow(DataRow row)
.在函数原型中放置一个显然没有帮助.
当你只需要一个方法时,想想Func ......也许是一个 Func<DataRow, T>
public static IList<T> ToList<T>(this DataTable table,
Func<DataRow,T> converter)
{
IList<T> list = new List<T>();
foreach (DataRow row in table.Rows)
list.Add(converter(row));
return list;
}
Run Code Online (Sandbox Code Playgroud)
然后打电话 table.ToList<User>(User.FromDataRow)