Question

J'ai un struct qui fonctionne comme le type 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();
    }

}

Je suis en train de l'utiliser avec ASP.NET MVC obligatoire. En utilisant le modèle client par défaut liant la propriété sera toujours donné nul. Je peux résoudre ce problème en ajoutant « .Value » à la fin de chaque nom d'entrée de forme, mais je veux juste de se lier au nouveau type directement en utilisant une sorte de liant modèle personnalisé, mais toutes les solutions que je l'ai essayé semblait inutilement complexe . Je sens que je devrais être en mesure d'étendre le liant par défaut et avec quelques lignes de code rediriger la propriété de liaison au modèle entier en utilisant la conversion implicite. Je ne comprends pas tout à fait le paradigme liaison du liant par défaut, mais il semble vraiment coincé sur cette distinction entre les propriétés du modèle et le modèle. Quelle est la méthode la plus simple de le faire? Merci!

Était-ce utile?

La solution

trouvé la réponse. J'ai juste besoin de mettre en œuvre un convertisseur de type personnalisé et le liant de modèle par défaut ramassée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top