main
class Program
{
    static void Main(string[] args)
    {
        Worker worker = new Worker();
        worker.Start();
        Console.ReadLine();
    }
}
Worker class
    public Worker()
    {
    }
    public Navigator Navigator;
    public Scraper Scraper;
    public void ResetVariables()
    {
        Navigator = new Navigator(this);
        Scraper = new Scraper(this);
    }
    public void Start()
    {
        ResetVariables();
        Navigator.SetHtml();
    }
Navigator class
    private Worker Worker;
    private Scraper Scraper;
    public string Html;
    public Navigator()
    {
    }
    public Navigator(Worker worker)
    {
        Worker = worker;
        Scraper = worker.Scraper;
    }
    public void SetHtml()
    {
        Html = "navigator has changed its html";
        Scraper.ReadHtmlFromNavigator(); //CAUSES NULL REFERENCE IF CALLED INISIDE THIS METHOD
    }
Scraper class
    private Worker Worker;
    private Navigator Navigator;
    public Scraper()
    {
    }
    public Scraper(Worker worker)
    {
        Worker = worker;
        Navigator = Worker.Navigator;
    }
    public void ReadHtmlFromNavigator()
    {
        Console.WriteLine("scraper reading html from navigator: " + Navigator.Html);
    }
When i call Scraper.ReadHtmlFromNavigator() from inside the navigator itself i get a null reference, but if i call it from the worker class it works fine:
public void Start()
    {
        ResetVariables();
        Navigator.SetHtml();
        Scraper.ReadHtmlFromNavigator();
    }
and i get the output:
scraper reading html from navigator: navigator has changed its html
 
     
     
    