Пример #1
0
        public static ISignableContract NewSubContract(this ISignableContract contract)
        {
            ISignableContract newSubContract = new SignableContract();

            contract.AddSubContract(newSubContract);
            return(newSubContract);
        }
Пример #2
0
        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>());
        }
Пример #3
0
        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)));
        }
Пример #4
0
        public void InstanceDependencyGeneric()
        {
            ISignableContract contract = new SignableContract();

            contract.Describe(10);

            ISignedContract signedContract = contract.Sign();

            Assert.AreEqual(signedContract.Resolve <int>(), 10);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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"));
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }