Esto es esencialmente lo que quiero hacer:¿Cómo definir un getter virtual y un setter abstracto para una propiedad?
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);
}
}
}
El captador de Variable
será el mismo en todas las clases derivadas, pero el colocador tiene que ser diferente.
De hecho ... Preferiría no tener clases derivadas en absoluto (solo es una llamada de función que diferirá para cada tipo) pero no se me ocurre cómo hacerlo.
Editar: Si no está claro cuál es el problema que estoy teniendo es, estoy recibiendo un error de sintaxis:
'UniformMatrix4.Variable.set': cannot override because 'Uniform.Variable' does not have an overridable set accessor
y no estoy seguro de cómo crear un "descriptor de acceso invalidante" ... virtual
y abstract
parece no estar permitido en el colocador.
En cuanto a su edición: es por eso que di la respuesta que di. He desconcertado sobre este problema antes. –