Вы можете сделать свойство статическим, а затем добавить его к каждому классу:
abstract class Main
{
public static int number;
public virtual void dostuff(){
int x = Main.number;
}
}
class Derived : Main
{
public static int number;
public overide void dostuff(){
int x = Derived.number;
}
}
Изменить: Я немного смущен вашими комментариями о полиморфизме, поэтому я добавил еще несколько примеров.
Main obj = new Derived();
obj.doStuff(); //This will use Derived.number; as doStuff is and overidden virtual method.
Однако, если вы делаете следующее:
abstract class Main
{
public static int number;
public void dostuff(){
int x = Main.number;
}
}
class Derived : Main
{
public static int number;
public new void dostuff(){
int x = Derived.number;
}
}
Тогда вы получите другое поведение, как показано ниже:
Main obj = new Derived();
obj.doStuff() // Will use Main.number
Derived obj2 = (Derived)obj;
obj2.doStuff() // Will use Derived.number
Если вы хотите другое поведение, которое я здесь не определил, пожалуйста, exaplin, потому что я не понимаю, что вы хотите.