2013-12-09 154 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