Jest to w zasadzie to, co chcę zrobić:Jak zdefiniować wirtualnego gettera i setera abstrakcyjnego dla nieruchomości?
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);
}
}
}
getter dla Variable
będą takie same we wszystkich klasach pochodnych, ale rozgrywający musi być inna.
W rzeczywistości ... Wolałbym nie mieć klas pochodnych w ogóle (to tylko jedno wywołanie funkcji, które będzie się różnić dla każdego typu), ale nie mogę myśleć o tym, jak to zrobić.
Edit: Jeśli nie było jasne, na czym polega problem mam jest, ja otrzymuję błąd składni:
'UniformMatrix4.Variable.set': cannot override because 'Uniform.Variable' does not have an overridable set accessor
I nie jestem pewien, jak stworzyć "nadpisywalny zestaw akcesoriów" ... virtual
i abstract
nie wydają się być dozwolone na setter.
Odnośnie twojej edycji: dlatego podałem odpowiedź, którą podałem. Już wcześniej zastanawiałem się nad tym problemem. –