我有一个带有以下签名的通用方法:
Broker.GetMessages<TType>();
它可以以下列方式使用:
IList<IEmailMessage> emails = Broker.GetMessages<IEmailMessage>();
我需要对一个包含多种类型的结构体数组中的每一种类型都执行这个方法:
var messageTypes = new [] { typeof(IEmailMessage), typeof(IFaxMessage) }
我的最终结果应该是这样的:
foreach ( IMessage message in messageTypes)
{
Broker.GetMessages<xxx>();
}
问题在于我不知道如何转换Type以便将其作为泛型参数传递。我知道可以使用反射来调用方法,但我想知道是否有更好的方法来完成这个任务。我可以改变数组结构,但无法改变方法签名。
Broker.GetMessages(Type messageType);
。我敢打赌你在那个方法里调用了typeof(TType)
,这表明它根本不应该是泛型的。 - vgru