Как определить виртуальный получатель и абстрактный сеттер для свойства?

По сути, это то, что я хочу сделать:

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);
        }
    }
}

Получатель для переменной будет одинаковым для всех производных классов, но установщик должен будь другим.

На самом деле ... Я бы предпочел вообще не иметь производных классов (это только один вызов функции, который будет отличаться для каждого типа), но я не могу придумать, как еще это сделать.


Изменить: Если не было ясно, в чем моя проблема, я получаю синтаксическую ошибку:

'UniformMatrix4.Variable.set': невозможно переопределить, потому что 'Uniform.Variable' не имеет переопределяемого средства доступа к набору

И я не уверен, как создать «переопределяемый метод доступа к набору» ... виртуальный и абстрактный , похоже, не разрешены на сеттере.

7
задан mpen 31 December 2011 в 22:44
поделиться