fork download
  1. public abstract class Factory<T> where T : class {
  2. public abstract T Build<U>(U obj) where U : class;
  3. }
  4. public class Quadrado {
  5. public int Largura { get; set; }
  6. public int Altura { get; set;}
  7. }
  8. public class Retangulo {
  9. public int Largura { get; set; }
  10. public int Altura { get; set; }
  11. }
  12. public class QuadradoFactory: Factory<Quadrado> {
  13. public override Quadrado Build<U>(U o) {
  14. var obj = o as Retangulo;
  15. if (obj == null) return null;
  16. return new Quadrado() { Largura = obj.Largura, Altura = obj.Altura };
  17. }
  18. }
  19. public class Program {
  20. public static void Main() {
  21. var f = new QuadradoFactory();
  22. var r = new Retangulo(){ Largura = 2, Altura = 4 };
  23. var q = f.Build<Retangulo>(r);
  24. System.Console.WriteLine("Largura: " + q.Largura + " Altura: " + q.Altura);
  25. }
  26. }
  27.  
  28. //https://pt.stackoverflow.com/q/325885/101
Success #stdin #stdout 0.02s 15892KB
stdin
Standard input is empty
stdout
Largura: 2 Altura: 4