Tôi đã nhìn thấy một số mẫu sử dụng 'T' để làm cho một phương pháp có thể tái sử dụng cho các bộ sưu tập chung của các lớp khác nhau, nhưng tôi chưa bao giờ thực sự hiểu được hoặc hiểu mẫu.Làm thế nào để cấu trúc lại 2 phương pháp tương tự này thành một?
Tôi tự hỏi liệu có thể đặt 2 phương pháp dưới đây vào một và những nhược điểm của việc này sẽ là (hiệu suất khôn ngoan).
Bất kỳ ai?
[NonAction]
public List<SelectListItem> ToSelectList(IEnumerable<Department> departments, string defaultOption)
{
var items = departments.Select(d => new SelectListItem() { Text = d.Code + " - " + d.Description, Value = d.Id.ToString() }).ToList();
items.Insert(0, new SelectListItem() { Text = defaultOption, Value = "-1" });
return items;
}
[NonAction]
public List<SelectListItem> ToSelectList(IEnumerable<Function> functions, string defaultOption)
{
var items = functions.Select(f => new SelectListItem() { Text = f.Description, Value = f.Id.ToString() }).ToList();
items.Insert(0, new SelectListItem() { Text = defaultOption, Value = "-1" });
return items;
}
SOLUTION
Các giải pháp mà tôi đã sử dụng:
sử dụng
var departmentItems = departments.ToSelectList(d => d.Code + " - " + d.Description, d => d.Id.ToString(), " - ");
var functionItems = customerFunctions.ToSelectList(f => f.Description, f => f.Id.ToString(), " - ");
với
public static class MCVExtentions
{
public static List<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, string> text, Func<T, string> value, string defaultOption)
{
var items = enumerable.Select(f => new SelectListItem() { Text = text(f), Value = value(f) }).ToList();
items.Insert(0, new SelectListItem() { Text = defaultOption, Value = "-1" });
return items;
}
}
Cảm ơn!Đây là thứ tôi đang tìm kiếm ngay từ đầu. Tôi sẽ cố gắng để thực hiện của bạn và xem nếu tôi thích làm việc với nó –
Hey câu trả lời của tôi là giống hệt nhau và đăng ba phút trước khi câu trả lời này được nêu ra câu trả lời này được 3 phiếu và số không của tôi! OK Tôi sẽ bỏ phiếu dù sao, nếu chỉ để có các tham số chung cho Chức năng theo thứ tự đúng ... – Motti
ToSelectList cũng có thể được thực hiện một phương thức mở rộng. – idursun