fork download
  1. using static System.Console;
  2.  
  3. public class Program {
  4. public static void Main() {
  5. var pai = new Pai();
  6. WriteLine(pai.Metodo1(1).GetType());
  7. var filha = new Filha();
  8. WriteLine(filha.Metodo1(1).GetType());
  9. filha.PropriedadeB = "xxx";
  10. WriteLine(filha.Metodo1(1).GetType());
  11. var temp = filha.Metodo1(1);
  12. WriteLine(temp.PropriedadeB);
  13. }
  14. }
  15.  
  16. public class Pai : Pai<Pai> { }
  17.  
  18. public class Pai<T> where T : Pai<T> {
  19. protected string PropriedadeA { get; set; }
  20. public T Metodo1(int valor) {
  21. //Vários procedimentos feitos aqui
  22. PropriedadeA = "Resultado do tratamento";
  23. return (T)this;
  24. }
  25. }
  26.  
  27. public class Filha : Pai<Filha> {
  28. public string PropriedadeB { get; set; }
  29. }
  30.  
  31. //https://pt.stackoverflow.com/q/47970/101
Success #stdin #stdout 0s 131520KB
stdin
Standard input is empty
stdout
Pai
Filha
Filha
xxx