public static void Main()
public class Wojciech : Bartosz
public override string FirstName
get { return "Wojciech"; }
public override string Lastname
get { return base.Surname; }
public override DateTime BirthDate
get { return new DateTime(2016, 2, 20); }
get { return new Parent("Magdalena"); }
get { return new Parent("Bartosz"); }
var wakeUpService = DependencyResolver.GetService<IWakeUpParent>();
wakeUpService.Execute(targets: new[] { Mom, Dad });
while (BirthDate.AddYears(1) > DateTime.Now);
public static class DependencyResolver
public static IWakeUpParent GetService<IWakeUpParent>()
where IWakeUpParent: class
return (IWakeUpParent)null;
public virtual string FirstName { get { return "Raczek"; } }
public virtual string Surname { get { return "Raczek"; } }
public void Sleep(double hours){}
public virtual DateTime BirthDate
get { return new DateTime(); }
public const int Hour = 1;
public virtual Parent Mom
get { return new Parent("Mom"); }
public virtual Parent Dad
get { return new Parent("Dad"); }
public Parent(string name){}
public interface IWakeUpParent
void Execute(Parent[] targets);