Вот моя проблема;
public class MyClass<T>
{
public void DoSomething(T obj)
{
....
}
}
Я сделал следующее:
var classType = typeof(MyClass<>);
Type[] classTypeArgs = { typeof(T) };
var genericClass = classType.MakeGenericType(classTypeArgs);
var classInstance = Activator.CreateInstance(genericClass);
var method = classType.GetMethod("DoSomething", new[]{typeof(T)});
method.Invoke(classInstance, new[]{"Hello"});
В приведенном выше случае я получаю исключение: операции с поздним связыванием не могут выполняться с типами или методы, для которых ContainsGenericParameters истинно.
Если я попытаюсь сделать метод универсальным, он снова потерпит неудачу с исключением: MakeGenericMethod может вызываться только для метода, для которого MethodBase.IsGenericMethodDefinition истинно.
Как мне вызвать метод?