- public abstract class Factory<T, U> where T : class  where U : class { 
-     public abstract T Build(U obj); 
- } 
- public class Quadrado { 
-     public int Largura { get; set; } 
-     public int Altura { get; set;} 
- } 
- public class Retangulo { 
-     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 class Program { 
-     public static void Main() { 
-         var f = new QuadradoFactory(); 
-         var r = new Retangulo(){ Largura = 2, Altura = 4 }; 
-         var q = f.Build(r); 
-         System.Console.WriteLine("Largura: " + q.Largura + " Altura: " + q.Altura); 
-     } 
- } 
-   
- //https://pt.stackoverflow.com/q/325885/101 
				cHVibGljIGFic3RyYWN0IGNsYXNzIEZhY3Rvcnk8VCwgVT4gd2hlcmUgVCA6IGNsYXNzICB3aGVyZSBVIDogY2xhc3MgewogICAgcHVibGljIGFic3RyYWN0IFQgQnVpbGQoVSBvYmopOwp9CnB1YmxpYyBjbGFzcyBRdWFkcmFkbyB7CiAgICBwdWJsaWMgaW50IExhcmd1cmEgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIGludCBBbHR1cmEgeyBnZXQ7IHNldDt9Cn0KcHVibGljIGNsYXNzIFJldGFuZ3VsbyB7CiAgICBwdWJsaWMgaW50IExhcmd1cmEgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIGludCBBbHR1cmEgeyBnZXQ7IHNldDsgfQp9CnB1YmxpYyBjbGFzcyBRdWFkcmFkb0ZhY3Rvcnk6IEZhY3Rvcnk8UXVhZHJhZG8sIFJldGFuZ3Vsbz4gewogICAgcHVibGljIG92ZXJyaWRlIFF1YWRyYWRvIEJ1aWxkKFJldGFuZ3VsbyBvKSA9PiBuZXcgUXVhZHJhZG8oKSB7IExhcmd1cmEgPSBvLkxhcmd1cmEsIEFsdHVyYSA9IG8uQWx0dXJhIH07Cn0KcHVibGljIGNsYXNzIFByb2dyYW0gewogICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7CiAgICAgICAgdmFyIGYgPSBuZXcgUXVhZHJhZG9GYWN0b3J5KCk7CiAgICAgICAgdmFyIHIgPSBuZXcgUmV0YW5ndWxvKCl7IExhcmd1cmEgPSAyLCBBbHR1cmEgPSA0IH07CiAgICAgICAgdmFyIHEgPSBmLkJ1aWxkKHIpOwogICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgiTGFyZ3VyYTogIiArIHEuTGFyZ3VyYSArICIgQWx0dXJhOiAiICsgcS5BbHR1cmEpOwogICAgfQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8zMjU4ODUvMTAx