Возможно ли это?Я стараюсь избегать большого копирования и вставки из области в область.У меня есть функция поиска (я уменьшил код для простоты).
if (!String.IsNullOrEmpty(filterVM.searchString))
{
var nameSearch = filterVM.searchString.ToLower();
guests = guests.Where(g => g.FirstName.ToLower().StartsWith(nameSearch)
|| g.LastName.ToLower().StartsWith(nameSearch)
)
}
filterVM.FilteredResultsCount = guests.CountAsync();
Гости могут переходить из области в область, но в ней всегда одни и те же базовые вещи, такие как FirstName и LastName, например:
public class GuestBasicBase
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string GuestGuid { get; set; } = Guid.NewGuid().ToString();
public string FirstName { get; set; }
public string LastName { get; set; }
}
Тогда у меня может быть больший класс для конкретной области, такой как
public class AreaOneGuest : GuestBasicBase
{
public int ID {get; set;}
public string ExtraFieldOne { get; set; }
public string ExtraFieldTwo { get; set; }
//Etc
}
Я хотел бы иметь функцию, которая будет возвращать модель представления, и часть этой модели представления - это PaginatedList, а другаячасть - это параметры фильтра, например:
public class GuestBasicBaseIndexVM
{
public PaginatedList<T:GuestBasicBase> Guests { get; set; }
public GuestIndexFilterVM FilterVM { get; set; }
}
И я хочу, чтобы функция возвращала это, но принимала поле большего размера, например
public async Task<GuestBasicBaseIndexVM>(T:GuestBasicBase, GuestIndexFilterVM filterVM){
//do search function
return (T where T: GuestBasicBase)
}
Имеет ли этот вопрос смысл иВозможно?В настоящее время пытаюсь самостоятельно и вижу, что происходит ... Я чувствую, что это что-то вроде PaginatedList
класса, но я не уверен