nanda
nanda

Reputation: 43

Factory Method Pattern using Generics-C#

Just I am learning Generics.When i have an Abstract Method pattern like :

//Abstract Product
interface IPage
{
    string pageType();
}

//Concerete Product 1
class ResumePage : IPage
{
    public string pageType()
    {
        return "Resume Page";
    }
}

//Concrete Product 2
class SummaryPage : IPage
{
  public string pageType()
  {
    return "SummaryPage";
   }
}

//Fcatory Creator
class FactoryCreator
{
   public IPage CreateOnRequirement(int i)
    {
      if (i == 1) return new ResumePage();
      else { return new SummaryPage(); }
    }
}


//Client/Consumer

void Main()
{

  FactoryCreator c = new FactoryCreator();
  IPage p;
  p = c.CreateOnRequirement(1);
  Console.WriteLine("Page Type is {0}", p.pageType());
  p = c.CreateOnRequirement(2);
  Console.WriteLine("Page Type is {0}", p.pageType());
  Console.ReadLine();
}

how to convert the code using generics?

Upvotes: 4

Views: 4913

Answers (1)

Simon P Stevens
Simon P Stevens

Reputation: 27499

You can implement the method with a generic signature and then create the type passed into the type parameter.

You have to specify the new() condition though.
This means it will only accept types that have an empty constructor.

Like this:

public IPage CreateOnRequirement<TCreationType>() where TCreationType:IPage,new()
{
    return new TCreationType();            
}

Upvotes: 6

Related Questions