[英]Blazor generic component with eventcallback
我创建了一个父组件可以绑定到的组件。 这是一个缩小的示例:
<input @bind=@Value />
@code {
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
[Parameter]
public string Value
{
get => _Value;
set
{
if (_Value == value) return;
_Value = value;
ValueChanged.InvokeAsync(value);
}
}
}
它正在工作,父组件可以绑定到该值并获取更新。
我现在想使组件通用。 这意味着,我希望父组件也能够绑定一个 int 值。 我尝试使用 typeparam,但随后这一行
if (_Value == value) return;
不再工作了。
如何使这个组件通用?
您不能直接使用==
比较泛型类型,您需要有一种比较方法。
@JonSkeet 殿下在这里使用EqualityComparer<T>.Default.Equals(x, y);
解释了正确的方法。
所以你的比较代码(假设泛型类型是TItem
)是:
[Parameter] public EventCallback<TItem> ValueChanged { get; set; }
[Parameter] public TItem Value
{
get => _Value;
set
{
if (EqualityComparer<T>.Default.Equals(_Value, value)) return;
_Value = value;
ValueChanged.InvokeAsync(value);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.