Il seguente disegno è difettoso?
Fondamentalmente ho una classe principale utilizzata per creare un oggetto di un tipo e quindi restituirlo come l'interfaccia principale del tipo. Il problema con questo è che ognuna delle classi che implementano l'interfaccia hanno tutte proprietà differenti che devono essere impostate. Quindi devo quindi restituirli al loro tipo principale per impostarli. Vedi il seguente codice:
public MainClass
{
public static IInterface CreateInstance(InstanceType instanceType)
{
IInterface interface = null;
switch (instanceType)
{
case InstanceType.ClassA:
interface = new ClassA;
break;
case InstanceType.ClassB:
interface = new ClassB;
break;
}
return interface;
}
}
public interface IInterface
{
string Method1();
}
public class ClassA : IInterface
{
public string Property1 { get; set; }
public string Method1()
{
//...
}
}
public class ClassB : IInterface
{
public int Property2 { get; set; }
public string Method1()
{
//...
}
}
Viene quindi utilizzato come:
IInterface interface = MainClass.CreateInstance(InstanceType.ClassA);
ClassA class = interface as ClassA;
class.Property1 = "";
interface.Method1();
C'è un modo migliore per farlo? (In realtà ci sono più metodi e proprietà di questo)