You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.6 KiB
86 lines
3.6 KiB
# Lightweight IOC Container
|
|
|
|
A lightweight IOC Container that is powerful enough to do all the things you need it to do.
|
|
|
|
[](https://github.com/SimonG96/LightweightIocContainer/actions)
|
|
|
|
[](https://www.nuget.org/packages/LightweightIocContainer/)
|
|
[](https://www.nuget.org/packages/LightweightIocContainer/)
|
|
[](https://www.nuget.org/packages/LightweightIocContainer/)
|
|
|
|
## Get started with the Lightweight IOC Container
|
|
|
|
### How to install
|
|
|
|
The easiest way to [install](https://github.com/SimonG96/LightweightIocContainer/wiki/Install-Lightweight-IOC-Container) the Lightweight IOC Container is by using [NuGet](https://www.nuget.org/packages/LightweightIocContainer/).
|
|
You can either use the [`PackageManager`](https://github.com/SimonG96/LightweightIocContainer/wiki/Install-Lightweight-IOC-Container#packagemanager) in VisualStudio:
|
|
|
|
```PM
|
|
PM> Install-Package LightweightIocContainer -Version 4.0.0-beta
|
|
```
|
|
|
|
or you can use the [`.NET CLI`](https://github.com/SimonG96/LightweightIocContainer/wiki/Install-Lightweight-IOC-Container#net-cli):
|
|
|
|
```.net
|
|
> dotnet add package LightweightIocContainer --version 4.0.0-beta
|
|
```
|
|
|
|
### Example usage
|
|
|
|
1. [Instantiate `IocContainer`](https://github.com/SimonG96/LightweightIocContainer/wiki/Simple-Usage-of-Lightweight-IOC-Container#instantiate-container):
|
|
|
|
```c#
|
|
IocContainer container = new();
|
|
```
|
|
|
|
2. Install [`IIocInstaller`s](https://github.com/SimonG96/LightweightIocContainer/wiki/IIocInstaller) for the container:
|
|
|
|
```c#
|
|
container.Install(new Installer());
|
|
```
|
|
|
|
3. [Resolve](https://github.com/SimonG96/LightweightIocContainer/wiki/Simple-Usage-of-Lightweight-IOC-Container#resolving-instances) one instance from the container:
|
|
|
|
```c#
|
|
IFooFactory fooFactory = container.Resolve<IFooFactory>();
|
|
```
|
|
|
|
4. Use this instance to [create](https://github.com/SimonG96/LightweightIocContainer/wiki/Advanced-Usage-of-Lightweight-IOC-Container#use-factories-to-resolve-instances) what your application needs:
|
|
|
|
```c#
|
|
IFoo foo = fooFactory.Create();
|
|
```
|
|
|
|
5. When your application is finished, don't forget to [dispose](https://github.com/SimonG96/LightweightIocContainer/wiki/Simple-Usage-of-Lightweight-IOC-Container#Disposing-Container) your `IocContainer`:
|
|
|
|
```c#
|
|
container.Dispose();
|
|
```
|
|
|
|
### Validation
|
|
|
|
You can validate your `IocContainer` setup by using the `IocValidator` in a unit test:
|
|
|
|
```c#
|
|
[TestFixture]
|
|
public class IocValidationTest
|
|
{
|
|
[Test]
|
|
public void ValidateIocContainerSetup()
|
|
{
|
|
IocContainer container = new();
|
|
container.Install(new Installer());
|
|
|
|
IocValidator validator = new(container);
|
|
validator.Validate();
|
|
}
|
|
}
|
|
```
|
|
|
|
If this test is successful, everything is correctly installed and can be resolved by the `IocContainer`. By going through the thrown exceptions in case of a failed test you will see what is not working correctly with your current setup.
|
|
|
|
### Demo Project
|
|
|
|
There is a [demo project][demoProjectLink] available where you can check out how different functions of the Lightweight IOC Container can be used.
|
|
|
|
[demoProjectLink]: https://github.com/SimonG96/LightweightIocContainer_Example
|
|
|