The Solid framework enables the development of .Net C# applications based on the SOLID design principles.
Acronym | Principle |
---|---|
S | Single-responsibility principle |
O | Open–closed principle |
L | Liskov substitution principle |
I | Interface segregation principle |
D | Dependency inversion principle |
-
DependencyInjectionContainer
- Implements constructor injection
- Comes with high flexibility for registering the units at the container
- It allows registration of existing object instances but also the registering of a type or a creator func.
- In case of registering types or creator funcs, the lifecycle can be choosen between Transient or Singleton.
- Throws TypeNotRegisteredException when trying to resolve a type that was not registered.
- Throws TypeNotRegisteredException when the type to resolve is registered but any of its dependencies is not registered.
- Throws CircularDependencyException when the typ to resolve depends on arguments that (over multiple steps) redirect to type to reslove.
-
Diagnostics
- Provides abstraction of Logging and Tracing
- Comes with implementations for output onto Console or File
- Comes with TraceConfiguration api that allows selection of TraceLevel and Output depending on Environment variables, CommandLineArgs or programmatically
- Supports validation of function argument prerequisites via a fluent ConsitencyCheck implementation
-
EventAggregator
- For loosely coupling of units but still based on strict types (no direct dependency of units, coupling based on events)
-
StateMachine
- Flexible configuration of states, triggers. permissions, entry and leave handlers with fluent configuration api
- Support of export into DotGraph format
- Currently no support for sub states
-
Dicom
- An abstraction that was introduced to operate on Dicom images independent on their technical source (files system vs memory instances)
- This Dicom api enables also to:
- operate on (MR)ImageAttributes on a semantical level (independent from concrete Dicom type like EnhancedMultiFrameImages vs. SingleDicomInages) for ordering Images or to parametrize algorithms
- group images into Volume blocks
- extract the pixel data and build volume blobs
- convert the original pixelData into different .net target data types
This software is distributed under the MIT License.
Namespace | Content |
---|---|
Solid.Infrastructure | InfrastructureRegistrar, InfrastructureDiContainer |
Solid.Infrastructure.BootStrapper | IBootStrapper, IBootable |
Solid.Infrastructure.BootStrapper.Impl | BootStrapper |
Solid.Infrastructure.Diagnostics | ConsistencyCheck, ILogger, ITracer, ITraceConfiguration |
Solid.Infrastructure.Diagnostics.Impl | FileTracer, ConsoleTracer, NullTracer, MultiTracer, TraceConfiguration |
Solid.Infrastructure.DiContainer | IDiContainer, IDiResolve, IDiRegister, IDiRegistrar, IDiIsRegistered |
Solid.Infrastructure.DiContainer.Impl | DiContainer |
Solid.Infrastructure.EventAggregator | IEventAggregator, IEvent, IHandleEvent |
Solid.Infrastructure.EventAggregator.Impl | EventAggregator |
Solid.Infrastructure.StateMachine | IStateMachine, IStateMachineCreator, IStateMachineStateConfiguration, IStateMachineInfo |
Solid.Infrastructure.StateMachine.Impl | StateMachine, StateMachineCreator, StateMachineStateConfiguration, StateMachineInfo. StateMachineDotGraphFormatter |
Solid.Infrastructure.RuntimeTypeExtensions | ... |
Solid.Infrastructure_uTest | Unit tests |
Namespace | Content |
Solid.Dicom | ... |
Solid.Dicom.Impl | ... |
Solid.Dicom_uTest | Unit tests |
Namespace | Content |
Solid.DicomAdapters.FoDicom | ... |
Solid.DicomAdapters.FoDicom.Impl | ... |
Solid.DicomAdapters.FoDicom_uTest | Unit tests |
Namespace | Content |
Solid.TestInfrastructure | ... |
Solid.TestInfrastructure_uTest | Unit tests |