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