I have an **asp.net webforms** application where the aspx pages get their data from a hierarchy of plain .net objects.

Currently the hierarchy is fully dynamic, being instantiated and stored once for each usersession, but I would like to use a function in one of the classes without creating the full hierarchy. (I want to avoid repeating the function that is in this class, but I need to use it outside the context of the class).

As an illustrative example, consider a webshop-type application with a shopping cart class. Inside the shopping cart class there is a function that applies discounts like say "buy 3 of this get 1 free". I want to be able to use this discount-function without creating a whole shopping cart and without repeating the code somewhere else.

Considering that this is a web-based application running under IIS7, which is the best approach? 

Should I:

* Break out this function and put it in
a separate class (containing only
static helper functions)?
* Just make
this one function static in the
current class?
* Use some other
approach to avoid the duplication?