Say, we have ClassA
with method Foo
containing an optional parameter. So, we can use it as shown in method DoFoo
.
public class ClassA
{
public ClassA() { }
public void Foo(bool flag = true)
{
}
public void DoFoo()
{
Foo(); // == Foo(true);
}
}
Once I needed to pass it to another class ClassB
. First I tried to pass it as Action
, but the signature surely didn't match. Then I passed it as Action<string>
, the signature matched, but the parameter in ClassB
was no longer optional. But I did wanted to have it optional and came to an idea to declare a delegate. So, it worked.
public delegate void FooMethod(bool flag = true);
public class ClassB
{
Action<bool> Foo1;
FooMethod Foo2;
public ClassB(Action<bool> _Foo1, FooMethod _Foo2)
{
Foo1 = _Foo1;
Foo2 = _Foo2;
}
public void DoFoo()
{
Foo1(true);
Foo2(); // == Foo2(true);
}
So, the question is: can I somehow pass a method with an optional parameter as an argument without explicitly declaring a delegate and keep the optional quality of its parameters?