/// Получение информации о типе static void TypeInfo() { ForInspection obj = new ForInspection(); Type t = obj.GetType(); Console.WriteLine("\n Информация о конструкторах:"); foreach (var x in t.GetConstructors()) { Console.WriteLine(x); } Console.WriteLine("\n Информация о методах:"); foreach (var x in t.GetMethods()) { Console.WriteLine(x); } Console.WriteLine("\n Информация о свойства:"); foreach (var x in t.GetProperties()) { Console.WriteLine(x); } }
static void Main(string[] args) { Type t = typeof(ForInspection); Console.WriteLine("Тип " + t.FullName + " унаследован от " + t.BaseType.FullName); Console.WriteLine("Пространство имен " + t.Namespace); Console.WriteLine("Находится в сборке " + t.AssemblyQualifiedName); Console.WriteLine("\nКонструкторы:"); foreach (var x in t.GetConstructors()) { Console.WriteLine(x); } Console.WriteLine("\nМетоды:"); foreach (var x in t.GetMethods()) { Console.WriteLine(x); } Console.WriteLine("\nСвойства:"); foreach (var x in t.GetProperties()) { Console.WriteLine(x); } Console.WriteLine("\nПоля данных (public):"); foreach (var x in t.GetFields()) { Console.WriteLine(x); } Console.WriteLine("\nСвойства, помеченные атрибутом:"); foreach (var x in t.GetProperties()) { object attrObj; if (GetPropertyAttribute(x, typeof(NewAttribute), out attrObj)) { NewAttribute attr = attrObj as NewAttribute; Console.WriteLine(x.Name + " - " + attr.Description); } } Console.WriteLine("\nВызов метода:"); //Создание объекта //ForInspection fi = new ForInspection(); //Можно создать объект через рефлексию ForInspection fi = (ForInspection)t.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { }); //Параметры вызова метода object[] parameters = new object[] { 3, 2 }; //Вызов метода object Result = t.InvokeMember("Sqrt", BindingFlags.InvokeMethod, null, fi, parameters); Console.WriteLine("Sqrt(3,2)={0}", Result); Console.ReadLine(); }
static void InvokeMemberInfo() /// Пример использования метода { Type t = typeof(ForInspection); Console.WriteLine("\nВызов метода:"); //Создание объекта ForInspection fi = (ForInspection)t.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { }); //Параметры вызова метода object[] parameters = new object[] { 3, 2 }; //Вызов метода object Result = t.InvokeMember("Plus", BindingFlags.InvokeMethod, null, fi, parameters); Console.WriteLine("Plus(3,2)={0}", Result); }
/// <summary> /// Пример использования метода InvokeMember /// </summary> static void InvokeMemberInfo() { Type t = typeof(ForInspection); Console.WriteLine("\nВызов метода:"); //Создание объекта //ForInspection fi = new ForInspection(); //Можно создать объект через рефлексию ForInspection fi = (ForInspection)t.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { }); //Параметры вызова метода object[] parameters = new object[] { 3, 2 }; //Вызов метода object Result = t.InvokeMember("Plus", BindingFlags.InvokeMethod, null, fi, parameters); Console.WriteLine("Plus(3,2)={0}", Result); }
/// <summary> /// Получение информации о типе /// </summary> static void TypeInfo() { ForInspection obj = new ForInspection(); Type t = obj.GetType(); //другой способ //Type t = typeof(ForInspection); Console.WriteLine("\nИнформация о типе:"); Console.WriteLine("Тип " + t.FullName + " унаследован от " + t.BaseType.FullName); Console.WriteLine("Пространство имен " + t.Namespace); Console.WriteLine("Находится в сборке " + t.AssemblyQualifiedName); Console.WriteLine("\nКонструкторы:"); foreach (var x in t.GetConstructors()) { Console.WriteLine(x); } Console.WriteLine("\nМетоды:"); foreach (var x in t.GetMethods()) { Console.WriteLine(x); } Console.WriteLine("\nСвойства:"); foreach (var x in t.GetProperties()) { Console.WriteLine(x); } Console.WriteLine("\nПоля данных (public):"); foreach (var x in t.GetFields()) { Console.WriteLine(x); } Console.WriteLine("\nForInspection реализует IComparable -> " + t.GetInterfaces().Contains(typeof(IComparable)) ); }