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