I hope the function isn't really called fn(), but actually named to what it does, like CalculateTotal(). Then you can extract this method into a class, say: TotalCalculator.
Now upon application startup, preferably using dependency injection, you create one instance of the class that gets shared between objects that require it. Like so:
class TotalCalculator
{
    public int Calculate()
    {
        return 42;
    }
}
class NeedsCalculator1
{
    TotalCalculator _calculator; 
    public NeedsCalculator1(TotalCalculator calculator)
    {
        _calculator = calculator; 
    }
    public void Foo()
    {
        _calculator.Calculate();
    }
}
class NeedsCalculatorToo
{
    TotalCalculator _calculator; 
    public NeedsCalculatorToo(TotalCalculator calculator)
    {
        _calculator = calculator; 
    }
    public void Bar()
    {
        _calculator.Calculate();
    }
}
Then you instantiate the calculator once, and pass it into the other classes' constructor:
TotalCalculator calculator = new TotalCalculator();
NeedsCalculator1 dependency1 = new NeedsCalculator1(calculator);
NeedsCalculatorToo dependency2 = new NeedsCalculatorToo(calculator);
You can now further abstract the calculator dependency by creating a base class containing the constructor and a protected TotalCalculator instance field, for example.