Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Arriving from the potential need to have multiple types of agents operating in a single application, I've created this simple implementation of the
IAgentAccessor
interface which will resolve an agent from a chain ofIAgentAccessor
implementations.Example of how to use.
The top-level service provider is expected to only have a single implementation of
IAgentAccessor
(if you happen to supply more than one, only the last one will be used). Therefore, theAgentAccessorChain
implementation has an options objectAgentAccessorChainOptions
which has its own, private service collection, and this implementation will use all registered implementations ofIAgentAccessor
.As an example, you could use this new implementation to combine the
HttpContextAgentAccessor
, which requires a HTTP Context (viaIHttpContextAccessor
) to return anIAgent
, with a custom implementation that does not require an HTTP Context to return anIAgent
. This custom implementation is entirely up to you. (More implementations may or may not come in future package releases. At this time, there is onlyHttpContextAgentAccessor
andUnknownAgentAccessor
the latter of which is only appropriate for testing purposes)