[英]C# Implementing Abstract factory pattern
我的一個項目中的Ive抽象工廠模式: http : //www.dofactory.com/Patterns/PatternAbstract.aspx
碼:
public class QuestaoResposta : QuestaoBaseResposta, IQuestao,IQuestionario
{
public int IDQuestaoResposta { get; set; }
}
public class QuestaoFactory : QuestoesFactory
{
public override QuestaoBaseResposta CreateQuestao()
{
return new QuestaoResposta();
}
}
public abstract class QuestoesFactory
{
public abstract QuestaoBaseResposta CreateQuestao();
}
public class QuestaoBaseResposta : IQuestao, IMarcas, IQuestionario
{
// Constructor where i want to create a concrete instance
// of any class that inherits QuestaoBaseResposta using QuestoesFactory
// abstract class, and assign it to current instance of
// QuestaoBaseResposta class
public QuestaoBaseResposta(QuestoesFactory qf)
{
this = qf.CreateQuestao();
}
}
問題是我無法使用“ THIS”關鍵字將值賦給當前類。
例:
QuestaoBaseResposta qs = new QuestaoBaseResposta(new QuestaoFactory());
// Here i want the qs intance to be type of QuestaoResposta
// since im passing QuestaoFactory as argument,without cast anything.
qs.IDQuestaoResposta = 0;
您有什么建議將QuestaoBaseResposta類轉換為繼承類型(QuestaoResposta),而不進行轉換?
this
是只讀的。 因此,您無法分配給它。
不,沒有鑄就不能投。 工廠的有效性來自於事實,xyou 並不需要知道確切的派生類返回的對象的。 如果您不使用工廠,而是在知道確切類型的地方調用構造函數,則情況有所不同。
您為什么不這樣做:
QuestaoBaseResposta qs = new QuestaoFactory().CreateQuestao();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.