Como uma classe não estática pode chamar o método de outra classe não estática?

Eu tenho 2 classes, ambos não estáticos. Eu preciso acessar um método em uma classe para retornar um objeto para processamento. Mas como as duas classes são não estáticas, não posso simplesmente chamar o método de maneira estática. Também não posso chamar o método de maneira não estática, porque o programa não conhece o identificador do objeto.

Antes de qualquer coisa, se possível, eu gostaria que ambos os objetos permanecessem não estáticos, se possível. Caso contrário, isso exigiria muita reestruturação do restante do código.

Heres o exemplo no código

class Foo
{
    Bar b1 = new Bar();

    public object MethodToCall(){ /*Method body here*/ }
}

Class Bar
{
    public Bar() { /*Constructor here*/ }

    public void MethodCaller()
    {
        //How can i call MethodToCall() from here?
    }
}

questionAnswers(4)

yourAnswerToTheQuestion