public static void Main()
public PlanType PlanType {get;set;}
public Regulation Regulation {get;set;}
public string GeneratedName {get;set;}
public string Name {get;set;}
public string Name {get;set;}
public interface IPlanNameGenerator
string Generate(Plan plan);
public class PlanNameGenerator : IPlanNameGenerator
public string Generate(Plan plan)
if (plan.PlanType.Name == "Ground Based Weed Sparying" && plan.Regulation.Name == "Weeding 101")
if (plan.PlanType.Name == "Aerial Weed Spraying" && plan.Regulation.Name == "Weeding 101")
if (plan.PlanType.Name == "Road Maintenance" && plan.Regulation.Name == "How to maintain roads 201")
return "something else again";