Итак, у меня есть базовый класс, который требует Socket:
class Sock
{
public Socket s;
public Sock(Socket s)
{
this.s = s;
}
public virtual void Process(byte[] data) { }
...
}
тогда у меня есть другой класс. если новый сокет будет принят, будет создан новый экземпляр этого класса:
class Game : Sock
{
public Random Random = new Random();
public Timerr Timers;
public Test Test;
public Game(Socket s) : base(s) { }
public static void ReceiveNewSocket(object s)
{
Game Client = new Game((Socket)s);
Client.Start();
}
public override void Process(byte[] buf)
{
Timers = new Timerr(s);
Test = new Test(s);
Test.T();
}
}
в классе Sock у меня есть виртуальная функция, которая перезаписывается классом Game. (Функция процесса). В этой функции я вызываю функцию из класса Test (Test + Timerr Class:
class Test : Game
{
public Test(Socket s) : base(s) { }
public void T()
{
Console.WriteLine(Random.Next(0, 10));
Timers.Start();
}
}
class Timerr : Game
{
public Timerr(Socket s) : base(s) { }
public void Start()
{
Console.WriteLine("test");
}
}
Итак, в функции Process я вызываю функцию в Test. И в этой функции (T) мне нужно вызвать функцию из класса Timerr. Но проблема в том, что он всегда равен NULL, хотя конструктор вызывается в Process. И, например, Случайный класс может быть вызван, я думаю, его потому, что он определен с помощью конструктора .:
public Random Random = new Random();
и вот почему другие классы (без конструктора):
public Timerr Timers;
public Test Test;
всегда равны нулю в унаследованном классе Test. Но по сути это то, что я вызываю другие методы других классов в этой функции. Как я могу решить это?