我想調用一個方法,需要兩個類型參數,其中之一是直到運行時才知道的。運行時類型參數
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)。 考生:對象的invoke(對象,對象[])或對象的invoke(對象,Reflection.BindingFlags,Reflection.Binder,對象[],CultureInfo的)
我明白這是什麼意思,但怎麼能我調用
Mapper.Map()
傳遞參數TSource source
而不是object
?如何返回
TTarget
而不是由method.Invoke()
返回的對象?