По сути, это то, что я хочу сделать:
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' не имеет переопределяемого средства доступа к набору
И я не уверен, как создать «переопределяемый метод доступа к набору» ... виртуальный
и абстрактный
, похоже, не разрешены на сеттере.