2013-12-09 200 views
0

我有名字,全名等 一個類型TDestination TSource獲取泛型類型

我從一個轉換到另一個像這樣的方法臨危一個泛型類型:

private static Type ConvertTypes<TSource>() 
    { 
     var mytype = typeof(TSource); 
     var newName = string.Format("{0}.{1}", Assembly.GetAssembly(typeof(Plugin)).FullName.Split(',')[0].ToString(), mytype .Name); 
     var newFullName = Assembly.GetAssembly(typeof(Plugin)).GetType(newName).FullName; 
     var TDestination = Type.GetType(newFullName); 
     return TDestination; 
    } 

我需要使用它採用通用方法如Method<T>();

我試過一些編碼,但我無法將Type轉換爲它的通用版本。

當我需要創建一個接收Func<TSource, bool>的方法並且此func需要映射到Func<TDestination, bool>時,這一切都開始了。

我收到一個Model類,並且必須將func轉換爲實體框架類的TDestination。

直到現在,沒有成功。

有人嗎?

+0

所以你的目標類型有相同的類名,但它是不同的命名空間或程序集? – Maess

+0

是的,你是對的,先生。相同的名稱,不同的名稱空間和程序集。 – programad

+0

我建議你只需使用配置驅動的映射器在類型名稱之間進行映射,然後就可以移除大部分昂貴的反射。 – Maess

回答

0

我建議你使用現有的解決方案來映射類型:AutoMapperEmit Mapper。還有ValueInjecter

+0

我在SackOverflow上搜索的所有解決方案都談論了一個我根本無法訪問的Mapper.CreateMapExpression方法。像這樣:http://stackoverflow.com/questions/7424501/automapper-for-funcs-between-selector-types – programad