@ Стивен, может ли следующий код представить и уточнить ваш вопрос?
предположим, у меня есть следующие компоненты
@*Parent.razor*@
@page "/Parent"
<div>
<Child Data="@Data" ValueChanged="@ValueChanged">
</Child>
</div>
@functions {
List<Item> Data = new List<Item>();
private void ValueChanged(Item item)
{
}
}
@*Child.razor*@
@typeparam TData
<div>
@foreach (var item in Data)
{
<button onclick="@(() => ValueChanged.InvokeAsync(item))"></button>
}
</div>
@functions {
[Parameter]
public IEnumerable<TData> Data { get; set; }
[Parameter]
protected EventCallback<TData> ValueChanged { get; set; }
}
// Item.cs
public class Item
{
public Item()
{
}
}
Как видите, у меня есть два компонента, и я использую дженерики (typeparam)
с EventCallback ... Теперь я хочу определить свойство EventCallback
с помощью метода доступа get, который проверяет, является ли тип TData типом bool, и если
это делает, покрывает делегат ValueChanged EventCallback
EventCallback<bool> BoolChanged {
get
{
if (typeof(TData) == typeof(bool)) return ValueChanged; // Needs conversion, but how
}
}