This question is sort of a follow-up to my original question here.
Let's say that I have the following generic class (simplifying! ^_^):
class CasterClass<T> where T : class
{
public CasterClass() { /* none */ }
public T Cast(object obj)
{
return (obj as T);
}
}
Which has the ability to cast an object into a specified type.
Unfortunately, at compile-time, I don't have the luxury of knowing what types exactly I'll have to work with, so I'll have to instantiate this class via reflection, like so:
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");
Problem is, once I call the method using mi.Invoke(), it will return an object typed output, instead of the specifically-typed T instance (because of reflection).
Is there any way to have a method invoked through reflection return a dynamic type, as illustrated above? I'm pretty sure that .NET 3.5 doesn't have the facilities to cast into a dynamic type (or rather, it would be very impractical).
Many thanks!