Так как вы изучаете .net / c #, я должен предупредить вас, что использование статических свойств, вероятно, не самый лучший способ для объектно-ориентированного программирования.
Статика является глобальным состоянием и опасна. Если вы в конечном итоге используете многопоточный код, вы должны быть очень осторожны. Если вам нужен только один экземпляр, просто создайте его экземпляр, но не создавайте статические свойства для класса, если у вас нет достаточно веских причин для их добавления (а я сейчас не могу придумать ни одного).
На самом деле, в хорошо спроектированном объектно-ориентированном коде у вас, вероятно, не будет много if, switch, getters или setters.
Допустим, вам нужно различное поведение в ваших классах, вы можете сделать это следующим образом.
Interface ISecurity {
void UpdateVarX(int value);
void UpdateVarY(int value);
int GetValueX();
int GetValueX();
}
class Foo:ISecurity {
// Implement methods of the interface
}
class Bar:ISecurity {
// Implement methods of the interface
}
class Yoo:ISecurity {
// Implement methods of the interface
}
// This class is the class that uses your other classes
class Consumer
{
private ISecurity sec;
public Consumer(ISecurity sec) {
sec.UpdateVarX(25);
}
}
Или если, как в вашем примере, все ваши статические классы имеют одинаковые свойства:
public class Settings {
public int A {get; set;}
public int B {get; set;}
public int C {get; set;}
}
public class NeedsToUseOtherClass {
public NeedsToUseOtherClass() {
Settings foo = new Settings();
Settings bar = new Settings();
Settings yoo = new Settings();
foo.setA(25);
}
}