Код: Выделить всё
bizMemberВот мой Текущая реализация: < /p>
Код: Выделить всё
private async Task DeleteItem(object item)
{
if (item is bizEarningYear bey)
{
await bey.Delete(bey.EarningYearId);
await _viewmodelbinder.LoadEarningYearList();
}
else if (item is bizParsha bp)
{
await bp.Delete(bp.ParshaId);
await _viewmodelbinder.LoadParshaList();
}
else if (item is bizMember m)
{
await m.Delete(m.MemberId);
await _viewmodelbinder.LoadMemberList();
}
}
private async void Delete_Clicked(object sender, EventArgs e)
{
if (sender is Button b && await PromptBeforeDelete(b.Parent.BindingContext))
{
try
{
await DeleteItem(b.Parent.BindingContext);
}
catch (Exception ex)
{
await DisplayAlert(this.ToString(), ex.Message, "Close");
}
}
}
< /code>
Что мне нужно: < /p>
[list]
[*] Масштабируемый способ удалить проверку типа (это операторы). < /li >
Общая функция, которая работает с любым BizObject и вызывает его метод
DELETE Dynamical. < /li>
< /ul>
ограничения: < / P>
Классы (bizMemberfrom bizobject .
[*] Каждый класс имеет удаление (Delete ( INT ID) < /code> Метод, который принимает идентификатор объекта
в качестве параметра. < /li>
Мне нужно обновить соответствующий список в _ViewModelbinder после
deletion.
[/list]
Как я могу рефактор deleteitem быть более общим и масштабируемым?
Я попытался использовать дженерики, такие как: < /p>
Код: Выделить всё
private async Task DeleteItem(bizObject item) where T : bizObject, new()
{
//code here
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-c-sharp
Мобильная версия