我有一個通用的方法具有以下簽名:數組類型的調用泛型方法
Broker.GetMessages<TType>();
它可以通過以下方式來使用:
IList<IEmailMessage> emails = Broker.GetMessages<IEmailMessage>();
我需要執行此方法在這種結構的陣列中可用的一系列類型:
var messageTypes = new [] { typeof(IEmailMessage), typeof(IFaxMessage) }
我的最終結果應該是這樣的:
foreach (IMessage message in messageTypes)
{
Broker.GetMessages<xxx>();
}
問題是我不知道如何隱藏類型爲了通過它作爲一個通用的。我知道我可以使用反射來調用該方法,但我想知道是否有更好的方法來實現這一點。 我可以更改數組結構,但不能更改方法簽名。
你的最後一個碼聲明實際上是的foreach(在messageTypes類型消息)。無論如何,爲了這個你想做的事情,我不會選擇一個泛型方法,而是一個常規方法(輸入messageType)作爲輸入參數。 – Matthias
此方法的簽名應該更像是'Broker.GetMessages(Type messageType);'。我敢打賭你在這個方法裏面調用'typeof(TType)',這表明它不應該是通用的。 – Groo
你根本沒有讀過這篇文章。我不能更改代理的簽名,因爲它是第三方程序集...... – Raffaeu