public abstract class Factory<T, U> where T : class where U : class {
public abstract T Build(U obj);
public int Largura { get; set; }
public int Altura { get; set;}
public int Largura { get; set; }
public int Altura { get; set; }
public class QuadradoFactory: Factory<Quadrado, Retangulo> {
public override Quadrado Build(Retangulo o) => new Quadrado() { Largura = o.Largura, Altura = o.Altura };
public static void Main() {
var f = new QuadradoFactory();
var r = new Retangulo(){ Largura = 2, Altura = 4 };
System.Console.WriteLine("Largura: " + q.Largura + " Altura: " + q.Altura);