I have 2 classes both non-static. I need to access a method on one class to return an object for processing. But since both classes is non-static, I cant just call the method in a static manner. Neither can I call the method in a non-static way because the program doesnt know the identifier of the object.
Before anything, if possible, i would wish both objects to remain non-static if possible. Otherwise it would require much restructuring of the rest of the code.
Heres the example in code
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?
}
}
In order for any code in a static or a non-static class to call a non-static method, the caller must have a reference to the object on which the call is made.
In your case,
Bar
'sMethodCaller
must have a reference toFoo
. You could pass it in a constructor ofBar
or in any other way you like:By passing an instance to the constructor:
Usage:
BTW, in general, objects don't have names.
Try this: