It is better to explain my intention with code. So right now I have the following code:
class A, IInterfaceUsedByB
{
}
class B
{
void func(A someObject)
{
func2(someObject, 1);
func3(someObject, "string");
func4(someObject, new MyObject());
}
func2(A someObject, int val);
func3(A someObject, string val);
func4(A someObject, C val);
}
Where func2, func3, func4 do need references to someObject. I want to change this to
void func()
{
with(someObject,
() =>
{
func2(1);
func3("string");
func4(new MyObject());
}
);
}
Or even better to
void func(someObject)
{
func2(1);
func3("string");
func4(new MyObject());
}
So that I don't have to drag this someObject around, but I should still be able to use it inside func2,3,4. I can use any of the three languages (C#, F# or IronPython) for this.
UPDATE In the ideal solution class B would be independent of A. func* functions only depend on a small interface of A consisting of 2 methods.