loresoft/Injectio

Feature request: Control the visibility of `DiscoveredServicesExtensions`

alexrp opened this issue ยท 2 comments

alexrp commented

Hi!

Thanks for putting this project together. It's saved me a fair bit of boilerplate. ๐Ÿ™‚

I was wondering if it would be possible to add an MSBuild property to control the visibility of the generated DiscoveredServicesExtensions class? Specifically, here:

codeBuilder
.AppendLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute]")
.AppendLine("[global::System.Diagnostics.DebuggerStepThroughAttribute]")
.AppendLine("public static class DiscoveredServicesExtensions")
.AppendLine("{")

In my solution, I have a few different projects for different areas of the application. Each such project already exposes a <Project>ServiceCollectionExtensions class with methods to register everything. This class needs to stay because, even when using Injectio, there are various essential services defined outside the assembly that also need to be added (e.g. ASP.NET Core stuff, AddOptions<T>(), etc...). So I figure I'll just call Injectio's generated method from there. That means exposing DiscoveredServicesExtensions publicly isn't necessary (and kind of a trap since it lacks those essential service registrations).

I figure this feature could just look something like <InjectioVisibility>internal</InjectioVisibility> (defaulting to public).

seems reasonable, I'll add it to list of things todo. thanks for the suggestion.

Any update on this request? I'd benefit from this greatly as I have a similar setup within some of my projects.

I'd be happy to author and submit a pull request to add this if that is preferable.