Это, по сути, что я хочу сделать:Как определить виртуальный геттер и абстрактный сеттер для свойства?
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
будет одинаков во всех производных классов, но связующий должен быть различным.
Фактически ... Я бы предпочел не иметь производные классы вообще (это только один вызов функции, который будет отличаться для каждого типа), но я не могу придумать, как это сделать.
Edit: Если бы не было ясно, что проблема у меня есть, я получаю ошибку синтаксиса:
'UniformMatrix4.Variable.set': cannot override because 'Uniform.Variable' does not have an overridable set accessor
И я не знаю, как создать «переопределяемый набор аксессуаров» ... virtual
и abstract
, похоже, не разрешены на сеттере.
Что касается вашего редактирования: вот почему я дал ответ, который я дал. Я раньше задавался этой проблемой. –