我正在学习泛型。当我有一个抽象方法模式时:
//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();
}
如何使用泛型转换代码?
答案 0 :(得分:6)
您可以使用通用签名实现该方法,然后创建传递给type参数的类型。
您必须指定new()
条件。
这意味着它只接受具有空构造函数的类型。
像这样:
public IPage CreateOnRequirement<TCreationType>() where TCreationType:IPage,new()
{
return new TCreationType();
}