Вызов неуниверсального метода с универсальными аргументами, определенными в универсальном классе

Вот моя проблема;

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 истинно.

Как мне вызвать метод?

6
задан bobbymcr 1 January 2012 в 21:03
поделиться