Sto dinamicamente Aggiunta e sostituzione di controlli di un pannello WinForm in fase di esecuzioneIn che modo è possibile sostituire l'ereditarietà con le interfacce nel modello di fabbrica?
Anche se tutte le opere mi è stato detto di implementare interfacce piuttosto che eredita da un baseUserControl.
Io sono tutto per esso, ma io non vedo come posso io ottenere lo stesso risultato utilizzando interfacce
Come faccio a codificare la mia fabbrica?
Come può essere migliorato e utilizzare invece le interfacce?
//Simplified noddy example
//Client code
var controlA = ControlFactory
.Create("UserControlA") as UserControlA;
panel1.Controls.Add(ControlA);
//Factory
public class ControlFactory
{
public static BaseUserControl Create(string name)
{
switch (name)
{
case "UserControlA":
var userControlA = new UserControlA();
return userControlA;
case "UserControlB":
var userControlB = new UserControlB();
return userControlB;
}
return null;
}
}
//BaseUserControl
public partial class BaseUserControl : UserControl
{
public BaseUserControl()
{
InitializeComponent();
}
public virtual void DoSomething()
{
}
}
public partial class UserControlA : BaseUserControl
{
public UserControlA()
{
InitializeComponent();
}
public override void DoSomething()
{
//Do something here
}
}
public partial class UserControlB : BaseUserControl
{
public UserControlB()
{
InitializeComponent();
}
public override void DoSomething()
{
//Do something here
}
}
si presenta come una domanda per il http://codereview.stackexchange.com/ – GolfWolf
Perché? Quale sarebbe il vantaggio di utilizzare le interfacce rispetto alla classe base? – Oded
Questi non sono esclusivi. IUserControl può dichiarare DoSomething() ed è possibile implementare BaseControl come implementazione di IUserControl (e restituire un IUserControl dalla fabbrica). – Joe