public static ISignableContract NewSubContract(this ISignableContract contract) { ISignableContract newSubContract = new SignableContract(); contract.AddSubContract(newSubContract); return(newSubContract); }
public void FactoryDependencyGeneric() { ISignableContract contract = new SignableContract(); contract.Describe <TestClass>().AsFactory(_ => new TestClass()); ISignedContract signedContract = contract.Sign(); Assert.AreNotEqual(signedContract.Resolve <TestClass>(), signedContract.Resolve <TestClass>()); }
public void FactoryDependency() { ISignableContract contract = new SignableContract(); contract.Describe(typeof(TestClass)).AsFactory(_ => new TestClass()); ISignedContract signedContract = contract.Sign(); Assert.AreNotEqual(signedContract.Resolve(typeof(TestClass)), signedContract.Resolve(typeof(TestClass))); }
public void InstanceDependencyGeneric() { ISignableContract contract = new SignableContract(); contract.Describe(10); ISignedContract signedContract = contract.Sign(); Assert.AreEqual(signedContract.Resolve <int>(), 10); }
public void Construct() { ISignableContract contract = new SignableContract(); contract.Describe(15); contract.Describe("hello"); var testClass = Constructor.Construct <TestClassWithConstructor>(contract.Sign()); Assert.AreEqual(15, testClass.Field1); Assert.AreEqual("hello", testClass.Field2); }
public void InstanceDependency() { ISignableContract contract = new SignableContract(); contract.Describe(typeof(int)).AsInstance(10); contract.Describe(typeof(int)).AsInstance(15).WithIdentifier("testId"); ISignedContract signedContract = contract.Sign(); Assert.AreEqual(10, signedContract.Resolve(typeof(int))); Assert.AreEqual(15, signedContract.Resolve(typeof(int), "testId")); }
public void InjectProperties() { ISignableContract contract = new SignableContract(); var id = new Identifier("number"); contract.Describe(15, id); contract.Describe("hello"); var testClass = new TestClassWithProperties(); var injector = new Injector(testClass, contract.Sign()); injector.InjectProperty("Property1", id); injector.InjectProperty("Property2"); Assert.AreEqual(15, testClass.Property1); Assert.AreEqual("hello", testClass.Property2); }
public void InjectField() { ISignableContract contract = new SignableContract(); var id = new Identifier("number"); contract.Describe(15, id); contract.Describe("hello"); var testClass = new TestClassWithFields(); var injector = new Injector(testClass, contract.Sign()); injector.InjectField("Field1", id); injector.InjectField("Field2"); Assert.AreEqual(15, testClass.Field1); Assert.AreEqual("hello", testClass.Field2); }
public void InjectMethods() { ISignableContract contract = new SignableContract(); var id = new Identifier("number"); contract.Describe(15, id); contract.Describe("hello"); var testClass = new TestClassWithMethods(); var injector = new Injector(testClass, contract.Sign()); var dependencyIds = new Dictionary <string, Identifier> { ["field1"] = id }; injector.InjectMethod("Method", dependencyIds); Assert.AreEqual(15, testClass.Field1); Assert.AreEqual("hello", testClass.Field2); }