Я пытаюсь вызвать общий метод и должен передавать его Тип динамически. Но получите ошибку компиляции: «CS0246: Тип или имя пространства имен« t »не удалось найти. Вам не хватает директивы использования или ссылки на сборку ». Пожалуйста, скажите мне, что я упускаю из виду, спасибо.Pass MakeGenericMethod a Dynamic Type
... в основном ...
Type t = DiscoverType(field); // returns Type given FieldInfo via Type.GetType(string)
MethodInfo method = typeof(testClass).GetMethod("MyGenericMethod", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo generic = method.MakeGenericMethod(typeof(t));
object[] args = {field};
generic.Invoke(this, args);
общий метод ...
private void MyGenericMethod<T>(FieldInfo field)
{
field.SetValue(obj, new List<T>(objList));
}
Возможный дубликат [Как использовать отражение для вызова общего метода?] (Http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method) – usr