繁体   English   中英

Blazor 通用组件,带事件回调

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM