Этот вопрос является своего рода продолжением моего первоначального вопроса здесь .
Допустим, у меня есть следующий родовой класс (упрощение! ^ _ ^):
class CasterClass<T> where T : class
{
public CasterClass() { /* none */ }
public T Cast(object obj)
{
return (obj as T);
}
}
Который обладает способностью приводить объект в указанный тип.
К сожалению, во время компиляции я не могу себе позволить точно знать, с какими типами мне придется работать, поэтому мне придется создать экземпляр этого класса с помощью отражения, например:
Type t = typeof(castedObject);
// creating the reflected Caster object
object CasterObj = Activator.CreateInstance(
typeof(CasterClass<>).MakeGenericType(t)
);
// creating a reflection of the CasterClass' Cast method
MethodInfo mi = typeof(CasterClass<>).GetMethod("Cast");
Проблема в том, что когда я вызываю метод с помощью mi.Invoke (), он возвращает вывод с типизированным объектом вместо специально типизированного экземпляра T (из-за отражения).
Есть ли способ заставить метод, вызываемый через отражение, возвращать динамический тип, как показано выше? Я почти уверен, что в .NET 3.5 нет средств для приведения в динамический тип (точнее, это было бы очень непрактично).
Большое спасибо!