string Executar()
Seria interessante que todas as classes usadas neste formulário sejam "downcasted" para uma interface comum, que poderia ser implementada da seguinte forma:public interface IExecutor { string Executar(); }Suponha que tenho somente duas classes (potencialmente várias). Estas classes implementariam esta interface e seriam obridadas pelo compilador a implementar a interface definida em "IExecutor"; por exemplo:
public class CTrabalhoDuro: IExecutor { public string Executar() { return "Estou trabalhando duro!!!"; } }e
public class CTrabalhoLeve: IExecutor { public string Executar() { return "Esse trabalho é moleza..."; } }Na hora de usar uma destas classes polimorficamente, posso tranquilamente ter o seguinte código (no click de um botão, por exemplo):
private void button1_Click(object sender, System.EventArgs e) { const string TIPO_TRABALHADOR = "Duro"; //const string TIPO_TRABALHADOR = "Leve"; IExecutor executor; // Instancia o objeto que implementa a interface "IExecutor" if (TIPO_TRABALHADOR == "Duro") executor = (IExecutor) new CTrabalhoDuro(); else executor = (IExecutor) new CTrabalhoLeve(); // Utiliza a instância System.Windows.Forms.MessageBox.Show(executor.Executar()); }Se qualquer uma das classes usadas neste bloco disser que implementa a interface "IExecutor", ela será obrigada pelo compilador a implementar esta interface...