Advertisement
social1986

Untitled

Dec 21st, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.73 KB | None | 0 0
  1. using System;
  2.  
  3. public class Startup
  4. {
  5.     public static void Main()
  6.     {
  7.         Type personType = typeof(Person);
  8.         ConstructorInfo emptyCtor = personType.GetConstructor(new Type[] { });
  9.         ConstructorInfo ageCtor = personType.GetConstructor(new[] { typeof(int) });
  10.         ConstructorInfo nameAgeCtor = personType.GetConstructor(new[] { typeof(string), typeof(int) });
  11.         bool swapped = false;
  12.         if (nameAgeCtor == null)
  13.         {
  14.             nameAgeCtor = personType.GetConstructor(new[] { typeof(int), typeof(string) });
  15.             swapped = true;
  16.         }
  17.  
  18.         string name = Console.ReadLine();
  19.         int age = int.Parse(Console.ReadLine());
  20.  
  21.         Person basePerson = (Person)emptyCtor.Invoke(new object[] { });
  22.         Person personWithAge = (Person)ageCtor.Invoke(new object[] { age });
  23.         Person personWithAgeAndName = swapped ? (Person)nameAgeCtor.Invoke(new object[] { age, name }) : (Person)nameAgeCtor.Invoke(new object[] { name, age });
  24.  
  25.         Console.WriteLine("{0} {1}", basePerson.name, basePerson.age);
  26.         Console.WriteLine("{0} {1}", personWithAge.name, personWithAge.age);
  27.         Console.WriteLine("{0} {1}", personWithAgeAndName.name, personWithAgeAndName.age);
  28.     }
  29. }
  30.  
  31. public class Person
  32. {
  33.     private string name;
  34.     private int age;
  35.  
  36.     public Person()
  37.     {
  38.         this.name = "No name";
  39.         this.age = 1;
  40.     }
  41.  
  42.     public Person(int age)
  43.         : this()
  44.     {
  45.         this.age = age;
  46.     }
  47.  
  48.     public Person(string name, int age)
  49.     {
  50.         this.name = name;
  51.         this.age = age;
  52.     }
  53.  
  54.     public string Name
  55.     {
  56.         get { return this.name; }
  57.     }
  58.  
  59.     public int Age
  60.     {
  61.         get { return this.age; }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement