Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- public class Startup
- {
- public static void Main()
- {
- Type personType = typeof(Person);
- ConstructorInfo emptyCtor = personType.GetConstructor(new Type[] { });
- ConstructorInfo ageCtor = personType.GetConstructor(new[] { typeof(int) });
- ConstructorInfo nameAgeCtor = personType.GetConstructor(new[] { typeof(string), typeof(int) });
- bool swapped = false;
- if (nameAgeCtor == null)
- {
- nameAgeCtor = personType.GetConstructor(new[] { typeof(int), typeof(string) });
- swapped = true;
- }
- string name = Console.ReadLine();
- int age = int.Parse(Console.ReadLine());
- Person basePerson = (Person)emptyCtor.Invoke(new object[] { });
- Person personWithAge = (Person)ageCtor.Invoke(new object[] { age });
- Person personWithAgeAndName = swapped ? (Person)nameAgeCtor.Invoke(new object[] { age, name }) : (Person)nameAgeCtor.Invoke(new object[] { name, age });
- Console.WriteLine("{0} {1}", basePerson.name, basePerson.age);
- Console.WriteLine("{0} {1}", personWithAge.name, personWithAge.age);
- Console.WriteLine("{0} {1}", personWithAgeAndName.name, personWithAgeAndName.age);
- }
- }
- public class Person
- {
- private string name;
- private int age;
- public Person()
- {
- this.name = "No name";
- this.age = 1;
- }
- public Person(int age)
- : this()
- {
- this.age = age;
- }
- public Person(string name, int age)
- {
- this.name = name;
- this.age = age;
- }
- public string Name
- {
- get { return this.name; }
- }
- public int Age
- {
- get { return this.age; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement