【发布时间】:2017-09-08 13:56:57
【问题描述】:
我有一个类型的全名作为字符串,我想用这个字符串来告诉泛型方法的类型。看到这个
string typeStr ="Dll.NameSpace.MyType";
var list = new List<Dll.NameSpace.MyType>();//should put typeStr here
var result = call.SomeGenericMethod<...>(obj);//should put typeStr here
This answer 没有帮助我。如果你尝试访问this other one,它并不能满足我的需求。
编辑:我试图调用的通用方法是扩展方法。我没有成功尝试以下代码,
method 仍然为空
var result = repo.Get();
Type elementType =
Type.GetType("x2o_Care.Models.ViewModels.PatientViewModel");
MethodInfo method =typeof(AutoMapper.QueryableExtensions.Extensions)
.GetMethod("ProjectTo", new[] { typeof(IQueryable)});
MethodInfo generic = method.MakeGenericMethod(elementType);
var model = generic.Invoke(result.OrderBy(e => true).Take(20), null);
【问题讨论】:
-
第二个链接正是你需要的最后一行。第二行的内容是不可能的,因为
var在编译时需要确切的类型。 -
那么,这就是你要找的吗? How to call a generic extension method with reflection??如果没有,您可以为您的问题提供minimal reproducible example 吗?