public TypeTest2() { Myclass myclass = new Myclass(); #region Вывод информиции о типе ListVariosStats(myclass); // Получаем разную информацию ListMethods(myclass); ListFilds(myclass); ListProps(myclass); ListInterfaces(myclass); ListConstructor(myclass); #endregion Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); // Вызов Private метода MethodInfo met = t.GetMethod("MethodC", BindingFlags.Instance | BindingFlags.NonPublic); met.Invoke(myclass, new object[] { "Hello", " world!" }); // Запись значения в private поле FieldInfo mystr = t.GetField("mystring", BindingFlags.Instance | BindingFlags.NonPublic); mystr.SetValue(myclass, "Привет мир"); Console.WriteLine($"{myclass.MyString}"); Console.ReadLine(); }
private void ListVariosStats(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); Console.WriteLine($"Полное имя {t.FullName}"); Console.WriteLine($"Базовый класс {t.BaseType}"); Console.WriteLine($"Абстрактный {t.IsAbstract}"); Console.WriteLine($"Это COM объект{t.IsCOMObject}"); Console.WriteLine($"Запрещено наследование {t.IsSealed}"); Console.WriteLine($"этот класс {t.IsClass}"); }
private void ListProps(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); PropertyInfo[] prop = t.GetProperties(); foreach (var item in prop) { Console.WriteLine($"Prop : {item.Name} {item.PropertyType}"); } }
private void ListInterfaces(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); Type[] it = t.GetInterfaces(); foreach (Type item in it) { Console.WriteLine($"Interface {item.Name}"); } }
private void ListConstructor(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); ConstructorInfo[] con = t.GetConstructors(); foreach (var item in con) { Console.WriteLine(item.Name); } }
private void ListFilds(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); FieldInfo[] filds = t.GetFields( BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); foreach (var item in filds) { Console.WriteLine($" Fild: {item.Name}"); } }
private void ListMethods(Myclass myclass) { Console.WriteLine(new string('_', 20)); Type t = myclass.GetType(); MethodInfo[] mi = t.GetMethods( BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly); foreach (var item in mi) { Console.WriteLine($"Method: {item.Name}"); } }