更新: 此问题已经过修改,以使其更加清晰.下面的答案似乎反映出这种方法效果很好.希望这个问题可以帮助那些需要添加get或者添加set现有财产的人.
今天遇到一个问题,我需要get用a get和覆盖基类的-only属性set.目前的共识似乎是这是不可能的,但我认为我找到了一种方法.
一般的想法是创建一个new属性而不是直接override使用旧属性,然后我们通过调用新方法创建一个override旧get方法的桥接方法.
这是一些无法修改的任意预先存在的类型结构的代码.
public abstract class A
{
public abstract int X { get; }
}
public class B : A
{
public override int X { get { return 0; } }
}
Run Code Online (Sandbox Code Playgroud)
我们想编写这段代码,但不会编译.
public class C : B // won't compile: X can't have a 'set' method
{
private int _x;
public override int X …Run Code Online (Sandbox Code Playgroud)