If I have the following code:
MyType<int> anInstance = new MyType<int>();
Type type = anInstance.GetType();
How can I find out which type parameter(s) "anInstance" was instantiated with, by looking at the type variable ? Is it possible ?
From stackoverflow
-
Use Type.GetGenericArguments. For example:
using System; using System.Collections.Generic; public class Test { static void Main() { var dict = new Dictionary<string, int>(); Type type = dict.GetType(); Console.WriteLine("Type arguments:"); foreach (Type arg in type.GetGenericArguments()) { Console.WriteLine(" {0}", arg); } } }
Output:
Type arguments: System.String System.Int32
-
Use Type.GetGenericArguments(). For example:
using System; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { MyType<int> anInstance = new MyType<int>(); Type type = anInstance.GetType(); foreach (Type t in type.GetGenericArguments()) Console.WriteLine(t.Name); Console.ReadLine(); } } public class MyType<T> { } }
Output: Int32
0 comments:
Post a Comment