Если у меня есть следующий код:
MyType<int> anInstance = new MyType<int>(); Type type = anInstance.GetType();
Как узнать, с каким параметром (ами) типа "anInstance" был создан экземпляр, посмотрев на переменную типа? Является ли это возможным ?
Использовать Type.GetGenericArguments . Например:
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); } } }
Выход:
Type arguments: System.String System.Int32
Используйте Type.GetGenericArguments (). Например:
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> { } }
Выход: Int32