Class BowireExtensionAttribute

Namespace
Kuestenlogik.Bowire.Semantics.Extensions
Assembly
Kuestenlogik.Bowire.dll

Marks a class as a Bowire extension — a viewer / editor (IBowireUiExtension) or a semantic-kind detector (IBowireFieldDetector) that the workbench should auto-discover at startup via assembly scan. The attribute itself carries no metadata; the implementation class supplies id / capabilities / resource names through the implemented contract interface.

[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class BowireExtensionAttribute : Attribute
Inheritance
BowireExtensionAttribute
Inherited Members

Remarks

Mirrors the existing IBowireProtocol discovery pattern: a host scans every loaded Kuestenlogik.Bowire* assembly, instantiates every type tagged with BowireExtensionAttribute that implements one of the supported extension interfaces, and registers it with the framework. Plugin authors don't need to wire anything into DI — dropping the package next to the host is enough.

A single nupkg can ship multiple [BowireExtension] types when they belong together (e.g. a MIL-symbol package shipping both a detector and a viewer extension). Each type is independently instantiated and registered.

Detector auto-discovery is additive to the manual services.AddSingleton<IBowireFieldDetector, ...>() path: hosts that hand-register a detector continue to work, and both paths land in the same IServiceCollection enumeration. Duplicate instances of the same detector type are suppressed by the registry sweep — a built-in that carries the marker AND is registered explicitly in the DI wiring does not fire twice.

Constructors

BowireExtensionAttribute()

public BowireExtensionAttribute()