Exemple #1
0
            public void NotifyWireupTask(IWireupCoordinator coordinator, WireupTaskAttribute task, Type target)
            {
                var cra = task as DTOAttribute;

                if (cra != null && target != null)
                {
                    var concreteMethod = ConcreteTypeMethod.MakeGenericMethod(target);
                    var concrete       = (Type)concreteMethod.Invoke(null, null);
                    var reg            = RegisterMethod.MakeGenericMethod(target, concrete);
                    reg.Invoke(FactoryProvider.Factory, null);
                }
            }
Exemple #2
0
        public void Register_ShouldThrowWhenClassDoesNotImplementGivenInterface(RegisterMethod registerMethod)
        {
            // Arrange
            var typesProvider = Substitute.For <ITypesProvider>();

            typesProvider.GetTypes().Returns(new[] { typeof(IDummyClassImplementingInterface).GetTypeInfo(), typeof(DummyClassNotImplementingInterface).GetTypeInfo() });
            var serviceRegistrator = new ServiceRegistrator(typesProvider);

            // Act
            // Assert
            Assert.That(() => Register(serviceRegistrator, (toImplement, implementation) => { }, registerMethod),
                        Throws.InstanceOf <RegistrationException>());
        }
Exemple #3
0
        public void Register_ShouldThrowWhenClassDeclaredToImplementDerivingClass(RegisterMethod registerMethod)
        {
            // Arrange
            var typesProvider = Substitute.For <ITypesProvider>();

            typesProvider.GetTypes().Returns(new[] { typeof(DummyClassDeclaringImplementationOfDerivingClass).GetTypeInfo(), typeof(DummyClass4).GetTypeInfo() });
            var serviceRegistrator = new ServiceRegistrator(typesProvider);

            // Act
            // Assert
            Assert.That(() => Register(serviceRegistrator, (toImplement, implementation) => { }, registerMethod),
                        Throws.InstanceOf <RegistrationException>());
        }
Exemple #4
0
 // Function to get instance of type if there is
 // cached one.
 public object TryGetInstance(Type type)
 {
     if (methodMap.ContainsKey(type))
     {
         methodMap[type] = RegisterMethod.MethodInstance;
         RegisterMethod m = methodMap[type];
         if (m == RegisterMethod.MethodInstance)
         {
             return(instances[type]);
         }
         else if (m == RegisterMethod.MethodSingleton)
         {
             return(GetSingleton(type));
         }
     }
     return(null);
 }
Exemple #5
0
        public ActionResult Register1(RegisterViewpage register, string Code)
        {
            IRegister Ir        = new RegisterMethod();
            string    message   = Ir.CheckRegister(register);
            string    checkcode = Session["CheckCode"].ToString().ToLower();

            if (message == "注册成功")
            {
                if (checkcode != Code.ToString().ToLower())
                {
                    return(Json("验证码错误!"));
                }
                else
                {
                    Ir.Add(register);
                }
            }

            return(Json(message));
        }
Exemple #6
0
        public void Register_ShouldProcessTypeWithProperAttributeForDerivingClass(RegisterMethod registerMethod)
        {
            // Arrange
            var dummyClassRegisteredCount = 0;
            var typesProvider             = Substitute.For <ITypesProvider>();

            typesProvider.GetTypes().Returns(new[] { typeof(DummyClass2).GetTypeInfo(), typeof(DummyClass3).GetTypeInfo() });
            void RegisterStub(Type toImplement, Type implementation)
            {
                if (implementation == typeof(DummyClass3) && toImplement == typeof(DummyClass2))
                {
                    dummyClassRegisteredCount++;
                }
            }

            var serviceRegistrator = new ServiceRegistrator(typesProvider);

            // Act
            Register(serviceRegistrator, RegisterStub, registerMethod);

            // Assert
            Assert.That(dummyClassRegisteredCount, Is.EqualTo(1));
        }
Exemple #7
0
        private object ResolveConcType(Type type)
        {
            bool singleton = false;

            // If there is type in list alredy, cycle is detecded.
            if (pathToResolve.Contains(type))
            {
                throw new DependencyCycleException();
            }

            pathToResolve.Add(type);

            if (methodMap.ContainsKey(type))
            {
                RegisterMethod m = methodMap[type];
                switch (m)
                {
                case RegisterMethod.MethodType:
                    break;

                case RegisterMethod.MethodInstance:
                    pathToResolve.Remove(type);
                    return(instances[type]);

                case RegisterMethod.MethodSingleton:
                    singleton = true;
                    break;

                default:
                    break;
                }
            }

            var resolve = ResolveType(type);

            if (instances.ContainsKey(type))
            {
                if (singleton && instances[type] != null)
                {
                    pathToResolve.Remove(type);
                    return(instances[type]);
                }
            }

            var constructors = resolve.GetConstructors();

            if (constructors.Length < 1)
            {
                if (resolve.IsValueType)
                {
                    pathToResolve.Remove(type);
                    return(Activator.CreateInstance(resolve));
                }
                else
                {
                    throw new DependencyTypeException(resolve);
                }
            }

            var constructor = constructors[0];

            FindConstructor(ref constructors, ref constructor);
            var parameters = constructor.GetParameters();


            List <object> resolvedParameters = new List <object>();

            FillParameterList(ref parameters, ref resolvedParameters);

            // Throw exception when not all parameters are resolved.
            if (parameters.Length != resolvedParameters.Count)
            {
                throw new DependencyTypeException(resolve);
            }

            object result = constructor.Invoke(resolvedParameters.ToArray());

            if (singleton)
            {
                instances[type] = result;
            }

            var properties = resolve.GetProperties();

            ResolveDependencyProperties(ref result, ref properties);

            var methods = resolve.GetMethods();

            ResolveDependencyMethods(ref result, ref methods);

            pathToResolve.Remove(type);
            return(result);
        }
 public static void RegisterCommandHandlers(Type controlType, bool acceptsRichContent, bool readOnly, bool registerEventListeners)
 {
     RegisterMethod.Invoke(null, new object[] { controlType, acceptsRichContent, readOnly, registerEventListeners });
 }
Exemple #9
0
 public void Register(FluentPerCharacterSettings settings) => RegisterMethod?.Invoke(Object, new object[] { settings });
Exemple #10
0
        private static void Register(ServiceRegistrator registrator, Action <Type, Type> registrationStub, RegisterMethod registerMethod)
        {
            switch (registerMethod)
            {
            case RegisterMethod.Singleton:
                registrator.RegisterSingletons(registrationStub);
                return;

            case RegisterMethod.Transient:
                registrator.RegisterTransient(registrationStub);
                return;

            default:
                throw new ArgumentOutOfRangeException("Not supported method!");
            }
        }
 public void Register(FluentGlobalSettings settings) => RegisterMethod?.Invoke(Object, new object[] { settings });