You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何通过MessagingCenter发送对象列表?

你调用MessagingCenter.Send时使用了仅支持单泛型参数的重载,该重载仅用于发送无附加数据的消息,泛型参数需要与传入的发送方实例类型完全匹配,无法携带List<BarData>作为消息参数。你需要使用支持携带附加数据的双泛型参数重载,写法如下:

发送端代码

假设你是在类型为HomePage的页面/MainViewModel的视图模型中发起发送,将第一个泛型参数替换为你实际的发送方类名即可:

// 第一个泛型参数:发送方的类型;第二个泛型参数:要传递的消息参数类型
MessagingCenter.Send<HomePage, List<BarData>>(this, "FaveBars", _favoriteBarsList);

如果不想限定发送方类型,也可以直接用object作为第一个泛型参数:

MessagingCenter.Send<object, List<BarData>>(this, "FaveBars", _favoriteBarsList);

接收端(FavoritesPage.xaml.cs)订阅代码

订阅的泛型参数需要和发送端完全保持一致:

// 写在页面初始化/OnAppearing方法中即可
MessagingCenter.Subscribe<HomePage, List<BarData>>(this, "FaveBars", (sender, receivedBars) =>
{
    // 此处receivedBars就是你传递的List<BarData>对象,可直接使用
});

如果发送端用了object作为泛型参数,订阅端写法对应调整为:

MessagingCenter.Subscribe<object, List<BarData>>(this, "FaveBars", (sender, receivedBars) =>
{
    // 业务逻辑
});

注意事项

页面销毁时需要主动取消订阅,避免内存泄漏,示例:

protected override void OnDisappearing()
{
    base.OnDisappearing();
    MessagingCenter.Unsubscribe<HomePage, List<BarData>>(this, "FaveBars");
}

内容的提问来源于stack exchange,提问作者Miranda Hall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:45:01