.NET 4.x Доступ к полям дочернего класса из родительского - C#
Формулировка задачи:
Вопрос это нормально что this.GetType()
Возвращает тип дочернего класса а не родительского?
А следовательно я могу перебрать в родительском классе поля дочерних классов
Листинг программы
- public class MyClass1
- {
- public String d { get; set; }
- public void GetProperties1()
- {
- foreach (var prop in GetType().GetProperties())
- {
- Console.WriteLine(prop.Name);
- }
- }
- }
- public class MyClass2 : MyClass1
- {
- public String d2 { get; set; }
- }
Решение задачи: «.NET 4.x Доступ к полям дочернего класса из родительского»
textual
Листинг программы
- public class VersionObject
- {
- public String d { get; set; }
- public Int32 GetHashCode1()
- {
- unchecked
- {
- Int32 version = 0;
- var props = GetType().GetProperties();
- foreach (var prop in props)
- {
- version += prop.GetValue(this).GetHashCode();
- }
- return version;
- }
- }
- }
- public class MyClass2 : VersionObject
- {
- public String d2 { get; set; }
- }
- static void Main(string[] args)
- {
- var d = new[]
- {
- new MyClass2{d="2", d2 = "2"},
- new MyClass2{d="1", d2 = "2"},
- new MyClass2{d="2", d2 = "2"},
- new MyClass2{d="1", d2 = "2"},
- };
- foreach (var obj in d)
- {
- Console.WriteLine("GetHashCode = {0}", obj.GetHashCode());
- Console.WriteLine("GetHashCode1 = {0}\r\n", obj.GetHashCode1());
- }
- Console.ReadLine();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д