<分区>
我需要动态创建一个类型 (T) 并调用带有参数 IQueryable 的泛型方法。像这样:
Type dynamicType = LinqRuntimeTypeBuilder.GetDynamicType(newProps); // newProps is Dictionary<string, Type>
MethodInfo getData = typeof(Helpers).GetMethod("GetData", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
getData = getData.MakeGenericMethod(dynamicType);
MethodInfo exec = typeof(ObjectContext).GetMethod("ExecuteStoreQuery", new Type[] { typeof(string), typeof(object[]) });
exec = exec.MakeGenericMethod(dynamicType);
MethodInfo qyble = typeof(Queryable).GetMethods().Where(m => m.Name == "AsQueryable").ToList()[0];
qyble = qyble.MakeGenericMethod(dynamicType);
var q1 = exec.Invoke(db, new object[] { "SELECT Id FROM SomeTable", new object[] { } });
q1 = qyble.Invoke(null, new object[] { q1 });
getData.Invoke(null, new object[] { q1 }));
现在,在方法中:
public static object GetData<T>(IQueryable<T> data)
{
Type t = typeof(T); // This gives me null;
}
typeof(T) 始终为空;
这是应该的方式吗?如果是这样的话,我能以某种方式以其他方式检索类型吗?
或者我做错了什么,遗漏了一些假定的东西?
问候, 米洛斯