Created
July 3, 2010 08:05
-
-
Save wahidshalaly/462398 to your computer and use it in GitHub Desktop.
Example of NInject usage for a class with a parameterized constructor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using Ninject; | |
using Ninject.Parameters; | |
using NUnit.Framework; | |
namespace NinjectExample | |
{ | |
[TestFixture] | |
public class NinjectTests | |
{ | |
private IKernel kernel; | |
[SetUp] | |
public void Setup() | |
{ | |
kernel = new StandardKernel(new MyNinjectModule()); | |
} | |
[Test] | |
public void CanGetInstanceOfClassA() | |
{ | |
var value = DateTime.Now; | |
var instanceA = kernel.Get<IClassA>(new ConstructorArgument("value", value)); | |
Assert.That(instanceA, Is.TypeOf(typeof(ClassA))); | |
Assert.That(instanceA.Value, Is.EqualTo(value)); | |
} | |
[Test] | |
public void CanGetInstanceOfClassAWithString() | |
{ | |
var value = DateTime.Now.ToShortDateString(); | |
var instanceA = kernel.Get<IClassA>(new ConstructorArgument("stringValue", value)); | |
Assert.That(instanceA, Is.TypeOf(typeof(ClassA))); | |
Assert.That(instanceA.Value.ToShortDateString(), Is.EqualTo(value)); | |
} | |
[Test] | |
public void CanGetInstanceOfClassB() | |
{ | |
var value = DateTime.Now; | |
var instanceA = kernel.Get<IClassA>(new ConstructorArgument("value", value)); | |
var instanceB = kernel.Get<IClassB>(new ConstructorArgument("a", instanceA)); | |
Assert.That(instanceB, Is.TypeOf(typeof(ClassB))); | |
Assert.That(instanceB.InstanceA, Is.EqualTo(instanceA)); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using Ninject.Modules; | |
namespace NinjectExample | |
{ | |
public class MyNinjectModule : NinjectModule | |
{ | |
public override void Load() | |
{ | |
Bind<IClassA>().To<ClassA>().Named("ClassA"); | |
Bind<IClassB>().To<ClassB>().Named("ClassB"); | |
} | |
} | |
public interface IClassA | |
{ | |
DateTime Value { get; } | |
void ChangeValue(DateTime value); | |
} | |
public interface IClassB | |
{ | |
IClassA InstanceA { get; } | |
void ChangeA(IClassA a); | |
} | |
public class ClassA : IClassA | |
{ | |
private DateTime _value; | |
public ClassA(DateTime value) | |
{ | |
if (DateTime.MinValue.Equals(value)) | |
throw new ArgumentOutOfRangeException("value"); | |
_value = value; | |
} | |
public ClassA(String stringValue) | |
{ | |
if (!DateTime.TryParse(stringValue, out _value)) | |
throw new ArgumentOutOfRangeException("stringValue"); | |
} | |
public DateTime Value | |
{ | |
get { return _value; } | |
} | |
public void ChangeValue(DateTime value) | |
{ | |
if (DateTime.MinValue.Equals(value)) | |
throw new ArgumentOutOfRangeException("value"); | |
_value = value; | |
} | |
} | |
public class ClassB : IClassB | |
{ | |
private IClassA _instanceA; | |
public IClassA InstanceA | |
{ | |
get { return _instanceA; } | |
} | |
public ClassB(IClassA a) | |
{ | |
_instanceA = a; | |
} | |
public void ChangeA(IClassA a) | |
{ | |
_instanceA = a; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment