Oi Paulo,
Você pode tentar usar o método ASSIGN para evitar que qualquer outro valor que seja atribuido à propriedade seja ignorado.
Outra coisa: a utilização do atributo PROTECTED na definição da propriedade não permitirá acessá-la através de clientes do objeto.
Veja o exemplo a seguir, talvez te ajude:
DEFINE CLASS MinhaClasse AS SESSION OLEPUBLIC
MinhaPropriedadeParaLeitura = [Texto só para leitura]
PROCEDURE MinhaPropriedadeParaLeitura_ASSIGN
LPARAMETERS tAssign
this.MinhaPropriedadeParaLeitura = [Texto só para leitura]
ENDPROC
ENDDEFINE
Um abraço!