Domanda

Ho una struct che funziona molto simile al tipo System.Nullable:

public struct SpecialProperty<T>
{
    public static implicit operator T(SpecialProperty<T> value)
    {
        return value.Value;
    }
    public static implicit operator SpecialProperty<T>(T value)
    {
        return new SpecialProperty<T> { Value = value };
    }

    T internalValue;
    public T Value { get { return internalValue; } set { internalValue = value; } }

    public override bool Equals(object other)
    {
        return Value.Equals(other);
    }
    public override int GetHashCode()
    {
        return Value.GetHashCode();
    }
    public override string ToString()
    {
        return Value.ToString();
    }

}

Sto cercando di usarlo con il legame ASP.NET MVC. Utilizzando il modello predefinito cliente legante la struttura sarà sempre resa nullo. Posso risolvere questo problema con l'aggiunta di ".Value" alla fine del nome di ogni modulo di input, ma voglio solo che si legano al nuovo tipo direttamente utilizzando una sorta di modello personalizzato legante, ma tutte le soluzioni che ho provato sembrava inutilmente complessa . Mi sento come dovrei essere in grado di estendere il legante di default e con poche righe di codice reindirizzare la proprietà vincolante per l'intero modello utilizzando conversione implicita. Non ho ben capito il paradigma di legame del legante di default, ma sembra veramente bloccato su questa distinzione tra le proprietà modello e modello. Qual è il metodo più semplice per fare questo? Grazie!

È stato utile?

Soluzione

trovato la risposta. Avevo solo bisogno di implementare un convertitore di tipo personalizzato e il legante modello predefinito lo raccolse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top