I would go with @justin-edwards about the `Func<>` vs. `Lazy<>`.
`Func<>` is more generic as `Lazy<>` is. It's an anonymous interface with a single method.
`Lazy<>` is one possible implementation of this interface, another one could be a function providing different values depending on the thread being executed.
So from my point of view `Func<>` is the better alternative to go with.