Why not just not call 'DoFoo()' until you want to?
-- Edit
I mean, what do you mean "use"
For example, if you want it to be called when '.ToString()' called, you can always inherit the class and implement your function there (but this would be quite unintuitive IMHO).