Это, по сути, то, что я хочу сделать:
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);
}
}
}
Получатель для Variable
будет одинаковым для всех производных классов, но установщик должен быть другим.
На самом деле ... я бы предпочел вообще не иметь производных классов (это только один вызов функции, который будет отличаться для каждого типа), но я не могу придумать, как еще это сделать.
Редактировать: Если неясно, в чем заключается проблема, я получаю синтаксическую ошибку:
'UniformMatrix4.Variable.set': невозможно переопределить, потому что 'Uniform.Variable' не имеет переопределенного метода доступа к множеству
И я не уверен, как создать «переопределенный метод доступа к множеству» ... virtual
и abstract
, похоже, не разрешены на сеттере.