public static void Main() {
ITeste<Objeto> teste = new CarroTeste();
public string nome { get{return _nome;} }
public class Carro : Objeto {
public interface ITeste<out T> where T : Objeto {
public abstract class TesteBase<T> : ITeste<T> where T : Objeto {
protected Objeto _obj = null;
public abstract string GetNome();
public class CarroTeste : TesteBase<Carro> {
public override string GetNome() {
return "Meu nome é : " + _obj.nome;