我的通用方法是这样的
public static class AppContainerInstaller
{
public static IMessageHandler<T> Resolve<T>()
{
return _container.Resolve<IMessageHandler<T>>();
}
}
Run Code Online (Sandbox Code Playgroud)
我试图从另一个类调用这个泛型方法
public static string ProcessMessage(IMessage message)
{
messageHandler = AppContainerInstaller.Resolve<message.GetType()>();
// THe previous line throws an error.
return messageHandler.Handle(message);
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何将消息类型传递给泛型方法?
你必须这样做:
messageHandler = AppContainerInstaller.Resolve<IMessage>();
Run Code Online (Sandbox Code Playgroud)
Resolve
方法是应该在T中传递类型的人.你看,当使用泛型时,你必须提供一个实际的类型.你可能想要改变Resolve
得到一个T参数,所以你可以通过message
.像这样的东西:
public static IMessageHandler<T> Resolve<T>(T param)
Run Code Online (Sandbox Code Playgroud)
你这样称呼它:
messageHandler = AppContainerInstaller.Resolve<IMessage>(message);
Run Code Online (Sandbox Code Playgroud)