【发布时间】:2012-01-31 05:33:38
【问题描述】:
这基本上就是我想要做的:
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 的 getter 在所有派生类中都是相同的,但 setter 需要不同。
事实上......我宁愿根本没有派生类(它只是一个函数调用,每种类型都会有所不同)但我想不出其他方法。
编辑:如果不清楚我遇到的问题是什么,我会收到语法错误:
“UniformMatrix4.Variable.set”:无法覆盖,因为“Uniform.Variable”没有可覆盖的集合访问器
而且我不确定如何创建“可覆盖的 set 访问器”... virtual 和 abstract 似乎不允许在 setter 上使用。
【问题讨论】:
-
关于您的编辑:这就是我给出我给出的答案的原因。这个问题我之前也很疑惑。
标签: c# properties virtual abstract