Прежде всего, вы обязательно должны прочитать больше ссылок о классах в C#.
Глядя на код, первое, что я вижу, это то, как класс Employer обращается к Worker.
public void startWorkDay()
{
Global.worker.doJob(jobiteration);
}
Вместо доступа к рабочему объекту stati c, вы можете обращаться с любым Worker независимый объект с этим фрагментом кода:
public void startWorkDay(Worker workerObjectToPerformTheJob)
{
workerObjectToPerformTheJob.doJob(jobiteration);
}
Также мы не пишем C#:
static public Worker worker;
static public Employer employer;
static public Reporter reporter;
Правильный путь: public static Foo bar;
О классах и объектах:
Ваша программа выполняется в области действия static void Main(string[] args) {//stuff happens here}
Поэтому, когда объект, определенный в границах Main (), хочет получить доступ к другому объекту из той же области действия , нет необходимости определять второй класс c.
Теперь, с другой стороны, что если бы было больше классов или областей? Как мы можем соединить их, чтобы они могли надежно обращаться друг к другу? Здесь у нас есть два класса, foo и bar. Foo необходимо передать строковую переменную в bar.
class foo{ string myString; }
class bar
{
void myMethod(string value)
{ print(value); }
}
Foo и Bar находятся в двух разных областях, поэтому для передачи myString в myMethod () мы можем реализовать мост между ними.
static class Bridge
{
public string passThis;
}
В области 1 ( возможно, это было событие, которое было вызвано до создания объекта бара ), создается объект Foo. Этот объект Foo передает myString в переменную Bridge.passThis
.
В области 2 создается объект Bar. Bar не может получить доступ к объекту Foo, поэтому мы не можем получить доступ к objectFoo.myString
. Вместо этого мы получаем доступ к Bridge.passThis и выполняем myMethod(Bridge.passThis);
Надеюсь, это кому-нибудь поможет.