I've noticed that in examples of creating expensive objects, StructureMap can defer creation using the Lazy or Func types for an interface.
e.g.
Lazy<ITheExpensiveService>();
I understand that with Lazy the value property is the single point at which the expensive object is then created.
Is StructureMap doing something special here or just using features already in .NET?
And how does this relate to how Func works since this has nothing to do with lazy creation?