平臺:C#2.0的WinForms使用泛型當類型不被在編譯時已知
我有一個工廠類,提供取決於我發送它的類型特定的數據映射器的實例化,所述代碼是作爲這樣:
public static IDataMapper<T> GetMapper<T>() where T: IDto
{
Type mapperType = MapperLocator.GetMapper(typeof(T));
return (IDataMapper<T>)mapperType.Assembly.CreateInstance(mapperType.FullName);
}
我正在使用DynamicProxy2截取對我的DTO對象的方法調用。在我的攔截方法中,我試圖使用Invocation.TargetType中的類型調用上述工廠。然而,除了這個例外:
無法找到類型或命名空間名稱'調用'。
顯然這是因爲任何對泛型方法的調用都需要根據我在編譯時理解的內容明確地知道類型。顯然,在這種情況下,我不能這樣做,我絕對不會在所有DTO對象中執行switch語句。
那麼,你們可以提出一個策略或指出我做錯了什麼嗎?我正在儘可能使其儘可能通用,以便它可以適用於我的所有對象和任何新對象,並且可以將代碼移植到其他項目。
在此先感謝!
你爲什麼把這個帖子發佈爲社區wiki? – Brandon 2009-07-16 21:20:35
是的,這應該是一個正常的問題。 – Noldorin 2009-07-16 21:21:17