So i have 2 classes named A and B.
A has a method \"public void Foo()\".
B has several other methods.
What i need is a variable in class B, that will
It sounds like you want to use a delegate here.
Basically, you can add, in class "B":
class B
{
public Action TheMethod { get; set; }
}
class A
{
public static void Foo() { Console.WriteLine("Foo"); }
public static void Bar() { Console.WriteLine("Bar"); }
}
You could then set:
B b = new B();
b.TheMethod = A.Foo; // Assign the delegate
b.TheMethod(); // Invoke the delegate...
b.TheMethod = A.Bar;
b.TheMethod(); // Invoke the delegate...
This would print out "Foo" then "Bar".
Reed gave you the right answer. It's also worth pointing out that you can use other delegate signatures besides Action.
There are generic versions like Action<T>
(one arg), Action<T1, T2>
(two args), etc...
Also if your method has a return type, check out Func<T, TResult>
.
Or of course you can define your own delegate type.