gpt4 book ai didi

c# - 如何传递一个对象类型来调用泛型方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:51 24 4
gpt4 key购买 nike

我的通用方法是这样的

public static class AppContainerInstaller
{
public static IMessageHandler<T> Resolve<T>()
{
return _container.Resolve<IMessageHandler<T>>();
}
}

我正在尝试从不同的类调用这个泛型方法

public static string ProcessMessage(IMessage message)
{
messageHandler = AppContainerInstaller.Resolve<message.GetType()>();
// THe previous line throws an error.
return messageHandler.Handle(message);
}

谁能告诉我如何将消息类型传递给泛型方法?

最佳答案

你必须这样做:

messageHandler = AppContainerInstaller.Resolve<IMessage>();

Resolve 方法应该获取在 T 中传递的类型。你看,在使用泛型时,你必须提供一个实际类型。你可能想更改 Resolve 得到一个 T 参数,所以你可以传递 message。像这样:

public static IMessageHandler<T> Resolve<T>(T param) 

你可以这样调用它:

messageHandler = AppContainerInstaller.Resolve<IMessage>(message);

关于c# - 如何传递一个对象类型来调用泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com