Why not implement a function to do the addition for you? For the case you mention above with only two cakes, it could look like:
public static FruitCake MergeCakes(FruitCake A, FruitCake B)
{
FruitCake mergedCake = new FruitCake();
// Do your merging, like for instance
mergedCake.Price = A.Price + B.Price;
return mergedCake;
}
You can then do your addition like this:
FruitCrate fcA = new FruitCake();
fcA = MergeCakes(Method_2(), Method_3());
If you need the ability to merge a large number of cakes, you can implement your MergeCakes-function with a List input, like for instance:
public static FruitCake MergeCakes(List<FruitCake> cakes)
{
if(cakes != null)
{
FruitCake mergedCake = new FruitCake();
// Do your merging, like for instance
foreach(var cake in cakes)
{
mergedCake.Price += cake.Price;
}
}
return mergedCake;
}
And then do your addition as follows:
FruitCrate fcA = new FruitCake();
fcA = MergeCakes(new List<FruitCake>(){ Method_2(), Method_3()), Method_4(), Method_5(), ... });
It might seem like I am not directly answering your question, but in my experience, you are better off keeping things as simple as possible for as long as possible. That way you can look back at your code two weeks from now and still understand whats going on.
Good luck!