我正在尝试调用一个需要两个类型参数的方法,其中一个在运行时之前是未知的。
public static TTarget Map<TSource, TTarget>(TSource source, string key) {
var typeMapping = TypeMapper.mappings.FirstOrDefault(m => m.Key == key);
if (typeMapping.Value == null) return null;
Type type = Type.GetType(typeMapping.Value.ToString());
if (type == null) return null;
var method = typeof(Mapper).GetMethod("Map").MakeGenericMethod(typeof(TSource), type);
return method.Invoke(source); // throws exception
}
我有两个问题:
我正在使用 AutoMapper,所以
Mapper.Map<TSource, TDestination>(TSource source)
我试图调用的方法也是如此,但是在调用时method.invoke(source)
我得到了异常无法解析方法调用(TSource)。候选对象是: object invoke(object, object[])或object invoke(object, Reflection.BindingFlags, Reflection.Binder, object[], CultureInfo)
我明白这意味着什么,但我怎样才能调用
Mapper.Map()
传递TSource source
and not的参数object
?如何返回
TTarget
而不是返回的对象method.Invoke()
?