Dinamik bir şekilde bir winform panelindeki denetimleri çalışma zamanında ekliyorum ve değiştiriyorumFabrika modelindeki arabirimlerle mirasın yerini nasıl alabilirim?
Tüm çalışmalara bir baseUserControl'den miras almak yerine arabirimler uygulamam söylendi bile.
ben arabirimleri benim Fabrikası kodlayacağınıza nasıl
kullanarak aynı sonucu elde edebilirsiniz nasıl ben bunun için tüm değilim ama yok?
Bu nasıl geliştirilebilir ve bunun yerine arayüzler kullanılabilir? İşte
//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
}
}
http://codereview.stackexchange.com/ – GolfWolf
Neden bir soru gibi görünüyor? Temel sınıf üzerinden arayüz kullanmanın avantajı ne olur? – Oded
Bunlar özel değildir. IUserControl'niz DoSomething() öğesini bildirebilir ve BaseControl'ü IUserControl'ü uygulayarak gerçekleştirebilirsiniz (ve bir IUserControl'ü fabrikadan iade edebilirsiniz). – Joe