Acessar instância de classe de modelo a partir de um AdditionalMetadataAttribute personalizado (asp.net mvc 5)

Eu tenho a seguinte situação - preciso escrever um atributo de metadados adicionais personalizados, que com base em outro valor da propriedade (do mesmo modelo), adicione um valor ao dicionário AdditionalValues. No momento, meu problema é que não consigo acessar a instância do modelo dentro da minha classe de atributo.

[AttributeUsage(AttributeTargets.Property)]
public class ExtendedAdditionalMetadataAttribute : Attribute, IMetadataAware
{
    #region Private properties
    private string extraFieldToCheck { get; set; }

    private string extraFieldValueToCheck { get; set; }

    private string fieldToBeAdded { get; set; }

    private string fieldValueToBeAdded { get; set; }
    #endregion

    #region Constructor
    public ExtendedAdditionalMetadataAttribute(string extraFieldToCheck, string extraFieldValueToCheck,
        string fieldToBeAdded, string fieldValueToBeAdded)
    {
        this.extraFieldToCheck = extraFieldToCheck;
        this.extraFieldValueToCheck = extraFieldValueToCheck;
        this.fieldToBeAdded = fieldToBeAdded;
        this.fieldValueToBeAdded = fieldValueToBeAdded;
    }
    #endregion

    public void OnMetadataCreated(ModelMetadata metadata)
    {
        // HOW TO GET THE MODEL CLASS INSTANCE??? 
        // metadata,.ContainerType is correct by metadata.Container is null.
    }
}

Como você vê nos comentários do código, no OnMetadataCreated, preciso acessar a instância da classe Model, mas, embora ContainerType esteja correto, a propriedade Container é NULL.

Você pode me ajudar, dando uma dica sobre esse problema?

AGRADEÇO ANTECIPADAMENTE!

Evdin

EDIÇÃO ÚLTIMA

Considerando que não dei muitas explicações, também colarei aqui um exemplo de como gostaria de usar esse atributo em uma classe de modelo:

/// <summary>
/// Gets or sets the IsAccountCreated
/// </summary>
/// <value>The IsAccountCreated.</value>
[UIHint("FormFieldStringTemplate")]
[ExtendedAdditionalMetadata("IsExternalAccount", "true", "ReadOnly", "true")]
public override Boolean IsAccountCreated { get; set; }      

/// <summary>
/// Gets or sets the IsAccountEnabled
/// </summary>
/// <value>The IsAccountEnabled.</value>
[Display(Name = "Este cont activ?")]
[UIHint("FormFieldStringTemplate")]
[ExtendedAdditionalMetadata("IsExternalAccount", "true", "ReadOnly", "true")]
public override Boolean IsAccountEnabled { get; set; }      

/// <summary>
/// Gets or sets the IsExternalAccount
/// </summary>
/// <value>The IsExternalAccount.</value>
[Display(Name = "Este cont extern?")]
[UIHint("FormFieldStringTemplate")]
[AdditionalMetadata("ReadOnly", "true")]
public override Boolean IsExternalAccount { get; set; } 

Mais tarde e mais tarde

Embora a resposta dada por @ stephen-muecke seja mais do que simples e aceitável na situação atual, por uma questão de desafio de programação, procurei outras opções e encontrei a seguinte possibilidade: implementar uma customDataAnnotationsModelMetadataProvider classe. Em poucas palavras simples - funciona e eu posso obter a instância da classe model MAS, apenas se a classe model for uma classe simples; caso contrário, existem muitas desvantagens - por exemplo, se você tem uma classe Model e a usa na sua exibição tudo bem, mas se você tiver uma classe dentro de outra classe (um modelo dentro de um viewmodel), essa abordagem não será mais utilizável.

Mais uma vez obrigado @ stephen-muecke!

questionAnswers(1)

yourAnswerToTheQuestion