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

如何将方法参数以Object类型传递并还原为原类型?(DevExpress Messenger封装)

问题描述

我想要封装DevExpress Messenger的功能,要求能把任意类型的变量传递给封装方法,方法内部自动将其还原为原始类型,确保发送的消息和注册时的类型一致。

我原本以为这做不到,但看到DevExpress官方示例里的Send方法可以直接接收任意类型的对象,还能被对应类型的注册者正确接收,对此我很困惑。

我知道用泛型可以实现类似功能(如下代码),但这种方式需要修改方法签名,得给至少400处调用指定泛型类型,太麻烦。我希望能直接全局替换Messenger.Default.Send为MessengerWrapper.Send,不用改原有调用的参数写法。

现有泛型实现示例

public static void Send<T>(object message)
{
    Messenger.Default.Send(message: (T)message);
    SIMSGlobal.LogInformationMessageSend(token);
}

DevExpress官方示例代码

public class MyMessage {}
public class Recipient {
    public Recipient() {
        // 接收string类型的消息
        Messenger.Default.Register<string>(this, OnMessage1);
        // 接收自定义MyMessage类型的消息
        Messenger.Default.Register<MyMessage>(this, OnMessage2);
    }
    void SendMessages() {
        // 发送string类型消息
        Messenger.Default.Send("test");
        // 发送自定义MyMessage类型消息
        Messenger.Default.Send(new MyMessage());
    }
    void OnMessage1(string message) {
        //...
    }
    void OnMessage2(MyMessage message) {
        //...
    }
}

内容的提问来源于stack exchange,提问作者Justin Lilly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:05:16