Вот моя проблема;
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 имеет значение true.
Если я попытаюсь сделать метод универсальным, то снова произойдет сбой за исключением:
MakeGenericMethod может быть вызван только для метода, для которого MethodBase.IsGenericMethodDefinition имеет значение true.
Как мне вызвать метод?