The lifetime of the OptionsAccessor is singleton by default if you use OptionsServices.DefaultServices, and the accessor caches the TOptions in a field, so it should only get computed the first time .Options is called and then return the same options instance after that.