This depends on a few things.
If the delegate is going to be used as an event, it should always be referred to as an EventHandler
subtype, for example:
public delegate void ValueExtractingEventHandler(object sender,
ValueExtractingEventArgs e);
If it's not an event, then the MS coding guidelines (which I can never seem to find the right copy of on Google) explicitly recommend against including words like "delegate" or "handler" in the delegate name, except in the special case of EventHandler
types.
Normally, delegates should be named after actions, which would be like ValueExtracting
(if the delegate happens before the value is extracted) or ValueExtracted
(after extraction).
The Func<T1, T2, ..., TResult>
delegate syntax is also becoming more common, but unless you have 4 or more parameters going into it, you don't need to declare your own at all - just use an existing one:
object ExtractObject(object source, Func<object, object> extractor);
This syntax is best when the delegate is being used as a closure. The delegate itself doesn't have a very interesting name, but the argument is an agent noun (extractor, provider, evaluator, selector, etc.)
Most delegate usages fit into one of the above categories, so figure out which one it's being used for choose appropriately.