Reputation: 10648
I have a class "A" from which I want to call a method in another different class "B" by passing a function as a parameter. Function passed as a parameter is in class B. So how to do it if I am calling method from class A?
I am using Visual Studio 2008 and .NET Framework 3.5.
I have seen this post but it tells how to call a main method by passing another method as a parameter but from the same class, not different class.
For example, in that post below example is provided:
public class Class1
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
public bool Test()
{
return RunTheMethod(Method1);
}
}
but how to do the following:
public Class A
{
(...)
public bool Test()
{
return RunTheMethod(Method1);
}
(...)
}
public class B
{
public int Method1(string input)
{
//... do something
return 0;
}
public int Method2(string input)
{
//... do something different
return 1;
}
public bool RunTheMethod(Func<string, int> myMethodName)
{
//... do stuff
int i = myMethodName("My String");
//... do more stuff
return true;
}
}
Upvotes: 2
Views: 4336
Reputation: 816
Try this
public Class A
{
(...)
public bool Test()
{
var b = new B();
return b.RunTheMethod(b.Method1);
}
(...)
}
Upvotes: 1
Reputation: 1815
You would need to make an instance of class B
inside class A
and then call the method, For example, change your class A
to:
public Class A
{
(...)
private B myClass = new B();
public bool Test()
{
return myClass.RunTheMethod(myClass.Method1);
}
(...)
}
Upvotes: 4