Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: controlando acesso

Program.cs

Paciente paciente = new Paciente("Luan", 12);
HistoricoMedico historico = new HistoricoMedico(paciente, "DAC-1234");

Console.Clear();
historico.ExibirCodigo();

Paciente.cs

public class Paciente {

    public string? Nome {get;set;}
    public int Idade {get;set;}

    public Paciente(string? nome, int idade) {
        Nome = nome;
        Idade = idade;
    }
    
}

No histórico médico, eu não usei o modificador internal propositalmente, porque toda classe criada sem ter seu modificador identificado terá o mesmo atribuído automaticamente como internal.

HistoricoMedico.cs

class HistoricoMedico {

    public Paciente? Paciente {get;}
    public string CodigoProntuario {get;}

    public HistoricoMedico(Paciente paciente, string codigoProntuario) {
        Paciente = paciente;
        CodigoProntuario = codigoProntuario;
    }

    public void ExibirCodigo () {
        Console.WriteLine($"Paciente: {Paciente!.Nome}");
        Console.WriteLine($"Idade: {Paciente.Idade}");
        Console.WriteLine($"Codigo do Prontuário: {CodigoProntuario}");
    }
    
}
1 resposta
solução!

Oi, Diego! Como vai?

Sua observação sobre o uso implícito do internal e da forma como estruturou as propriedades somente leitura no HistoricoMedico ficou perfeita. Isso mostra uma boa preocupação com encapsulamento e controle de acesso aos dados, principalmente ao evitar alterações indevidas no prontuário.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!