3

I have a generic class in C#, like this:

   public class GenericClass<T> { ... }

Now, I have the Type object for an object, and would like to, through reflection or otherwise, to get the Type object for GenericClass<T> where T corresponds to that Type object I have my object.

Like this:

   Type requiredT = myobject.GetType();
   Type wantedType = typeof(GenericClass<requiredT>);

Obviously this syntax doesn't work, but how do I do it?

0

3 Answers 3

9

Yes, you can:

Type requiredT = ...
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);

This will give you the GenericClass<T> Type object, where T corresponds to your requiredT.

You can then construct an instance using Activator, like this:

var instance = Activator.CreateInstance(wantedType, new Object[] { ...params });
Sign up to request clarification or add additional context in comments.

Comments

5
Type requiredT = myobject.GetType();
Type genericType = typeof(GenericClass<>);
Type wantedType = genericType.MakeGenericType(requiredT);

Comments

5
Type wantedType = typeof(GenericClass<>).MakeGenericType(requiredT);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.