** Use in classes to denote a field that should be dependency injected.** ** It is the intention that '@Inject' be (re)used as a general purpose facet by many dependency providers in IoC ** and by custom libraries.** Hence support for the attributes 'id', 'type', and 'optional' is entirely dependent on the individual dependency provider.** ** Core IoC dependency providers use the '@Inject' facet to:** ** - inject IoC services** - inject Log instances** - mark ctors to use for autobuilding / service creation.** @Jsfacet class Inject {** When injecting services, 'id' denotes the qualified ID of the service to inject. (optional)** ** When injecting 'Log' instances, 'id' denotes the log name. (optional)const Str? id := null** When injecting services, 'type' is used to look up the service - which may be different ** (or more specific) than the field type. (optional)const Type? type := null** If 'true' and the dependency / service does not exist then injection should fail silently ** without causing an Err.const Bool optional := false}