//var objeto = new Classe(42);
var objeto = new Classe<int>(42);
var myObj = Factory.Create(42);
var o = Classe<bool>.Create(42);
System.Console.Write(o.campo.GetType());
public class Classe<T> {
public readonly T campo;
public Classe(T valor) => campo = valor;
public static Classe<T1> Create<T1>(T1 valor) => new Classe<T1>(valor);
}
public class Factory {
public static Classe<T> Create<T>(T valor) => new Classe<T>(valor);
}
//https://pt.stackoverflow.com/q/579364/101
Ly92YXIgb2JqZXRvID0gbmV3IENsYXNzZSg0Mik7CnZhciBvYmpldG8gPSBuZXcgQ2xhc3NlPGludD4oNDIpOwp2YXIgbXlPYmogPSBGYWN0b3J5LkNyZWF0ZSg0Mik7CnZhciBvID0gQ2xhc3NlPGJvb2w+LkNyZWF0ZSg0Mik7ClN5c3RlbS5Db25zb2xlLldyaXRlKG8uY2FtcG8uR2V0VHlwZSgpKTsKCnB1YmxpYyBjbGFzcyBDbGFzc2U8VD4gewogICAgcHVibGljIHJlYWRvbmx5IFQgY2FtcG87CiAgICBwdWJsaWMgQ2xhc3NlKFQgdmFsb3IpID0+IGNhbXBvID0gdmFsb3I7CglwdWJsaWMgc3RhdGljIENsYXNzZTxUMT4gQ3JlYXRlPFQxPihUMSB2YWxvcikgPT4gbmV3IENsYXNzZTxUMT4odmFsb3IpOwp9CgpwdWJsaWMgY2xhc3MgRmFjdG9yeSB7CiAgICBwdWJsaWMgc3RhdGljIENsYXNzZTxUPiBDcmVhdGU8VD4oVCB2YWxvcikgPT4gbmV3IENsYXNzZTxUPih2YWxvcik7Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzU3OTM2NC8xMDE=