Wie definieren Sie einen virtuellen abstrakte getter-und setter für eine Eigenschaft?

Dies ist im wesentlichen, was ich tun will:

public abstract class Uniform<T>
{
    public readonly int Location;
    private T _variable;

    public virtual T Variable
    {
        get { return _variable; }
    }
}

public class UniformMatrix4 : Uniform<Matrix4>
{
    public override Matrix4 Variable
    {
        set
        {
            _variable = value;
            GL.UniformMatrix4(Location, false, ref _variable);
        }
    }
}

Den getter für Variable werden die gleichen sein in allen abgeleiteten Klassen, aber die Einstellung muss anders werden.

In der Tat... ich würde es vorziehen, nicht zu haben abgeleitete Klassen (und es ist nur eine Funktion aufrufen, unterscheiden sich für jede Art), aber ich kann nicht denken, wie sonst, es zu tun.


Edit: Wenn es war nicht klar, was das problem das ich habe ist, ich bekomme einen syntax-Fehler:

'UniformMatrix4.Variable.set': nicht überschreiben kann, weil 'Uniform.Variable' nicht haben eine überschreibbare set-accessor

Und ich bin mir nicht sicher, wie Sie Sie erstellen eine "überschreibbare set-accessor"... virtual und abstract scheint Ihnen nicht erlaubt, auf der setter.

Bezüglich deinem edit: das ist, warum ich gab die Antwort, die ich gab. Ich habe gerätselt, um dieses problem vor.

InformationsquelleAutor mpen | 2011-12-31

Schreibe einen Kommentar