mirror of https://github.com/AMT-Cheif/Stylet.git
Start work on the README
This commit is contained in:
parent
0bcc6d192d
commit
b4aecbab9a
|
@ -80,7 +80,7 @@ namespace StyletIoC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Check for loops
|
// If we get circular dependencies, we'll just blow the stack. They're a pain to resolve.
|
||||||
|
|
||||||
// If there parameter's got an InjectAttribute with a key, use that key to resolve
|
// If there parameter's got an InjectAttribute with a key, use that key to resolve
|
||||||
var ctorParams = ctor.GetParameters().Select(x =>
|
var ctorParams = ctor.GetParameters().Select(x =>
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
StyletIoC IoC Container
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
StyletIoC is a very lightweight (~500 LOC), fully unit tested, very very fast IoC container.
|
||||||
|
It was written for use in medical software (where third-party libraries are a concern), but you might decide to use it for its simplicity, performance, or some of its nice features.
|
||||||
|
|
||||||
|
|
||||||
|
Quick Start
|
||||||
|
-----------
|
||||||
|
|
||||||
|
You can't create a container directly.
|
||||||
|
Instead, you create a builder, register bindings on that builder, then create an immutable container from that builder (the rationale behind this is description in a technical section later).
|
||||||
|
|
||||||
|
A simple example:
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// Some types...
|
||||||
|
interface I1 { }
|
||||||
|
class C1 : I1 { }
|
||||||
|
class C2 { }
|
||||||
|
|
||||||
|
// Create a builder
|
||||||
|
var builder = new StyletIoCBuilder();
|
||||||
|
|
||||||
|
// Bind C1 to I1
|
||||||
|
builder.Bind<I1>().To<C1>();
|
||||||
|
|
||||||
|
// Bind C2 to itself, as a singleton
|
||||||
|
builder.Bind<C2>().ToSelf().InSingletonScope();
|
||||||
|
|
||||||
|
// Create an IContainer
|
||||||
|
var ioc = builder.BuildContainer();
|
||||||
|
|
||||||
|
// Right! Now we can start fetching things
|
||||||
|
|
||||||
|
// Fetches a new instance of C1
|
||||||
|
var c1 = ioc.Get<I1>();
|
||||||
|
|
||||||
|
// Fetches the singleton instance of C2
|
||||||
|
var c2 = ioc.Get<C2>();
|
||||||
|
|
||||||
|
// Error! We haven't bound C1 to itself
|
||||||
|
var error = ioc.Get<C1>();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Bindings in Detail
|
||||||
|
------------------
|
||||||
|
|
||||||
|
|
||||||
|
Technical / Behind the Scenes
|
||||||
|
-----------------------------
|
|
@ -175,16 +175,5 @@ namespace StyletUnitTests
|
||||||
Assert.IsInstanceOf<C1>(subject.C1);
|
Assert.IsInstanceOf<C1>(subject.C1);
|
||||||
Assert.IsTrue(subject.ParametersInjectedCalledCorrectly);
|
Assert.IsTrue(subject.ParametersInjectedCalledCorrectly);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ChecksForCircularDependencies()
|
|
||||||
{
|
|
||||||
var builder = new StyletIoCBuilder();
|
|
||||||
builder.Bind<C3>().ToSelf();
|
|
||||||
builder.Bind<C4>().ToSelf();
|
|
||||||
var ioc = builder.BuildContainer();
|
|
||||||
|
|
||||||
ioc.Get<C3>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue