Просто подумайте о том, чтобы придумать шаблонный компонент блейзора для создания одностраничного приложения в стиле CRUD, в которое может быть передан конкретный c объект, поэтому мне не придется писать один и тот же шаблонный код снова и снова.
так, например, как показано ниже, его части могут быть шаблонизированы с помощью объектов RenderFragment:
@typeparam TItem
<div>
@if (AddObjectTemplate != null)
{
@AddObjectTemplate
}
else
{
<div style="float:left">
<button class="btn btn-primary" @onclick="AddObject">Add Object</button>
</div>
}
</div>
@code {
[Parameter]
public RenderFragment AddObjectTemplate { get; set; }
[Parameter]
public IList<TItem> Items { get; set; }
}
Однако в дальнейшем мне может понадобиться что-то вроде этого:
<button class="btn btn-default" @onclick="@(() => EditObject(item.Id))">Edit</button>
protected void EditObject(int id)
{
TItem cust = _itemServices.Details(id);
}
Проблема заключается в том, что приведенный выше вызов EditObject (item.Id) не может разрешить указанный объект c в данный момент, поскольку он не знает, что такое TItem. Есть ли способ использовать указанный c интерфейс в компоненте шаблона, который должен реализовывать каждый объект, или есть другой способ сделать это?
Идея состоит в том, чтобы иметь AddObject, EditObject, DeleteObject et c которые в основном делают одно и то же, но с разными типами объектов.