Exemple #1
0
        public RequestHeaders(IObjectConverter converter, IObjectResolver resolver, IRequestData requestData)
        {
            _converter = converter;
            _resolver  = resolver;

            _values = requestData.ValuesFor(RequestDataSource.Header);
        }
        public static void InjectGameObject(this IObjectResolver resolver, GameObject gameObject)
        {
            var buffer = UnityEngineObjectListBuffer <MonoBehaviour> .Get();

            void InjectGameObjectRecursive(GameObject current)
            {
                if (current == null)
                {
                    return;
                }

                buffer.Clear();
                current.GetComponents(buffer);
                foreach (var monoBehaviour in buffer)
                {
                    resolver.Inject(monoBehaviour);
                }

                var transform = current.transform;

                for (var i = 0; i < transform.childCount; i++)
                {
                    var child = transform.GetChild(i);
                    InjectGameObjectRecursive(child.gameObject);
                }
            }

            InjectGameObjectRecursive(gameObject);
        }
        static Exception TryResolveWithType(this IObjectResolver resolver, Type contractType, ParameterSet parameters, out object instance)
        {
            Requires.NotNull(resolver, "resolver");
            Requires.NotNull(contractType, "contractType");

            ObjectBuilder builder;
            var           state = resolver.Kernel.TryGet(contractType, out builder);

            switch (state)
            {
            case ObjectBuilderState.Normal:
                instance = resolver.Resolve(builder, parameters);
                return(null);

            case ObjectBuilderState.Invalid:
                instance = null;
                return(new ObjectBuilderNotFoundException(GetObjectBuilderNotFoundErrorMessage(contractType)));

            case ObjectBuilderState.Unregistered:
                builder = resolver.Kernel.AutoObjectRegistrar.GetObjectBuilder(contractType);
                if (builder == null)
                {
                    instance = null;
                    return(new ObjectBuilderNotFoundException(GetObjectBuilderNotFoundErrorMessage(contractType)));
                }
                instance = resolver.Resolve(builder, parameters);
                return(null);

            default:
                throw new ImpossibleException();
            }
        }
Exemple #4
0
        public object CreateInstance(IObjectResolver resolver, IReadOnlyList <IInjectParameter> parameters)
        {
            var parameterInfos  = injectTypeInfo.InjectConstructor.ParameterInfos;
            var parameterValues = CappedArrayPool <object> .Shared8Limit.Rent(parameterInfos.Length);

            try
            {
                for (var i = 0; i < parameterInfos.Length; i++)
                {
                    var parameterInfo = parameterInfos[i];
                    try
                    {
                        parameterValues[i] = resolver.ResolveOrParameter(
                            parameterInfo.ParameterType,
                            parameterInfo.Name,
                            parameters);
                    }
                    catch (VContainerException ex)
                    {
                        throw new VContainerException(parameterInfo.ParameterType, $"Failed to resolve {injectTypeInfo.Type} : {ex.Message}");
                    }
                }
                var instance = injectTypeInfo.InjectConstructor.ConstructorInfo.Invoke(parameterValues);
                Inject(instance, resolver, parameters);
                return(instance);
            }
            finally
            {
                CappedArrayPool <object> .Shared8Limit.Return(parameterValues);
            }
        }
        /// <summary>
        /// Tries to retrieve all service associated with the <paramref name="contractType"/> and use those components
        /// to build a object instances.
        /// </summary>
        /// <param name="resolver">The resolver.</param>
        /// <param name="contractType">Type of the contract.</param>
        /// <param name="instances">The instances.</param>
        /// <returns></returns>
        public static Exception TryResolveAll(this IObjectResolver resolver, Type contractType, out IList <object> instances)
        {
            Requires.NotNull(resolver, "resolver");
            Requires.NotNull(contractType, "contractType");
            IEnumerable <ObjectBuilder> builders;

            if (!resolver.Kernel.TryGet(contractType, out builders))
            {
                instances = null;
                return(new ObjectBuilderNotFoundException(GetObjectBuilderNotFoundErrorMessage(contractType)));
            }

            var resolvedInstances = new List <object>();

            foreach (var builder in builders)
            {
                object instance;
                var    ex = TryResolve(resolver, builder, null, out instance);
                if (ex != null)
                {
                    instances = null;
                    return(ex);
                }
                resolvedInstances.Add(instance);
            }

            instances = resolvedInstances;
            return(null);
        }
        public static T Instantiate <T>(this IObjectResolver resolver, T prefab) where T : UnityEngine.Object
        {
            var instance = UnityEngine.Object.Instantiate(prefab);

            InjectUnityEngineObject(resolver, instance);
            return(instance);
        }
        public RequestHeaders(IObjectConverter converter, IObjectResolver resolver, ICurrentHttpRequest request)
        {
            _converter = converter;
            _resolver  = resolver;

            _values = new HeaderValueSource(request);
        }
        public XDbProvider(string redisConnectionString, ICosmosDb cosmosCosmosDb)
        {
            DocumentCosmosDb = cosmosCosmosDb;

            Connect(redisConnectionString);
            Resolver = new DocDbRedisResolver(this);
        }
Exemple #9
0
    public MessagePipeDemo(IPublisher <int> publisher, ISubscriber <int> subscriber, IObjectResolver resolver)
    {
        this.publisher  = publisher;
        this.subscriber = subscriber;

        GlobalMessagePipe.SetProvider(resolver.AsServiceProvider());
    }
 internal ScopedContainerBuilder(
     IObjectResolver root,
     IScopedObjectResolver parent)
 {
     this.root   = root;
     this.parent = parent;
 }
Exemple #11
0
 public ObjectBlockReader(IObjectBlockParser parser, IObjectResolver resolver, IServiceLocator services, BlockRegistry blocks)
 {
     _parser   = parser;
     _resolver = resolver;
     _services = services;
     _blocks   = blocks;
 }
        public object SpawnInstance(IObjectResolver resolver)
        {
            Component component;
            var       parent = destination.GetParent();

            if (destination.Prefab != null)
            {
                if (destination.Prefab.gameObject.activeSelf)
                {
                    destination.Prefab.gameObject.SetActive(false);
                }
                component = UnityEngine.Object.Instantiate(destination.Prefab, parent);
            }
            else
            {
                var name = string.IsNullOrEmpty(destination.NewGameObjectName)
                    ? ImplementationType.Name
                    : destination.NewGameObjectName;
                var gameObject = new GameObject(name);
                gameObject.SetActive(false);
                if (parent != null)
                {
                    gameObject.transform.SetParent(parent);
                }
                component = gameObject.AddComponent(ImplementationType);
            }
            injector.Inject(component, resolver, Parameters);
            component.gameObject.SetActive(true);
            return(component);
        }
        public static T Instantiate <T>(this IObjectResolver resolver, T prefab, Transform parent, bool worldPositionStays = false)
            where T : UnityEngine.Object
        {
            var instance = UnityEngine.Object.Instantiate(prefab, parent, worldPositionStays);

            InjectUnityEngineObject(resolver, instance);
            return(instance);
        }
 public void Configure(IQueryControllerConfiguration config)
 {
     _reader           = config.Reader;
     _storage          = config.Storage;
     _readerParameters = config.ReaderParameters;
     _resolver         = config.Resolver;
     _expressions      = config.ExpressionEngine;
 }
Exemple #15
0
        public static T Bind <T>(this IObjectResolver resolver, IDictionary <string, object> dictionary)
        {
            var source = new SettingsData(dictionary);
            var result = resolver.BindModel(typeof(T), source);

            result.AssertNoProblems(typeof(T));

            return((T)result.Value);
        }
Exemple #16
0
 public object SpawnInstance(IObjectResolver resolver)
 {
     if (specificInstance != null)
     {
         injector.Inject(specificInstance, resolver, parameters);
         return(specificInstance);
     }
     return(injector.CreateInstance(resolver, parameters));
 }
        public SqlTokenizer(TextReader reader, IObjectResolver resolver)
        {
            _resolver  = resolver;
            _operators = _resolver.GetOperators().ToHashSet();

            _reader = reader;
            NextChar();
            NextToken();
        }
Exemple #18
0
        private void RegisterInterface(Type interfaceType, IObjectResolver objectResolver)
        {
            if (!_interfaces.ContainsKey(interfaceType))
            {
                _interfaces.Add(interfaceType, new List <IObjectResolver>());
            }

            _interfaces[interfaceType].Add(objectResolver);
        }
        public static T Resolve <T>(this IObjectResolver resolver, IObjectObserver <T> observer)
        {
            var builder = observer.ObjectBuilder;

            if (builder == null)
            {
                throw new ObsoleteObjectBuilderException(GetObsoleteObjectBuilderErrorMessage(observer.ContractType));
            }
            return(resolver.Resolve(builder, null));
        }
Exemple #20
0
 public object GetLogger(IObjectResolver objectResolver, Type declaringType)
 {
     // method is used to resolve logger instances azure function implementations with [inject] attribute
     return(GetLogger(declaringType, delegate
     {
         var factory = objectResolver.Resolve <ILoggerFactory>();
         var loggerName = GetLoggerName(declaringType);
         return factory.CreateLogger(loggerName);
     }));
 }
Exemple #21
0
        /// <summary>
        /// 设置IObjectResolver的实例,允许在框架外部控制对象的实例化过程。
        /// </summary>
        /// <param name="objectResolver"></param>
        public static void SetResolver(IObjectResolver objectResolver)
        {
            if (objectResolver == null)
            {
                throw new ArgumentNullException("objectResolver");
            }

            // 这个方法通常会在程序初始化时调用,所以暂不考虑线程安全问题。
            s_objectResolver = objectResolver;
        }
Exemple #22
0
        /// <summary>
        /// 初始化 <see cref="RemoteObjectContext" /> 类。
        /// </summary>
        static RemoteObjectContext()
        {
            var resolver = new DefaultObjectResolver();

            resolver.RegisterGenericTypeDefinition(typeof(IQueryProvider <>), typeof(RestQueryProvider <>));
            resolver.Register <IExpressionProcessor>(p => new ExpressionProcessor());
            resolver.Register <IExpressionWriter>(p => new ExpressionWriter());

            DefaultObjectResolver = resolver;
        }
Exemple #23
0
 public void InstantiateIn(IObjectResolver objectResolver)
 {
     if (objectResolver is StructureMapObjectResolver)
     {
         this.InstantiateInStructureMap();
     }
     else
     {
         throw new ArgumentException("Unsupported type of object resolver is provided", "objectResolver");
     }
 }
 public JavaScriptJsonReader(IStreamingData data
                             , IObjectResolver objectResolver,
                             IRequestData requestData,
                             IServiceLocator serviceLocator
                             )
 {
     _data           = data;
     _objectResolver = objectResolver;
     _requestData    = requestData;
     _serviceLocator = serviceLocator;
 }
        void InjectMethods(object obj, IObjectResolver resolver, IReadOnlyList <IInjectParameter> parameters)
        {
            if (injectTypeInfo.InjectMethods == null)
            {
                return;
            }

            foreach (var method in injectTypeInfo.InjectMethods)
            {
                var parameterInfos  = method.ParameterInfos;
                var parameterValues = CappedArrayPool <object> .Shared8Limit.Rent(parameterInfos.Length);

                try
                {
                    for (var i = 0; i < parameterInfos.Length; i++)
                    {
                        var set           = false;
                        var parameterInfo = parameterInfos[i];
                        if (parameters != null)
                        {
                            foreach (var x in parameters)
                            {
                                if (x.Match(parameterInfo))
                                {
                                    parameterValues[i] = x.Value;
                                    set = true;
                                    break;
                                }
                            }
                        }

                        if (set)
                        {
                            continue;
                        }

                        var parameterType = parameterInfo.ParameterType;
                        try
                        {
                            parameterValues[i] = resolver.Resolve(parameterType);
                        }
                        catch (VContainerException ex)
                        {
                            throw new VContainerException(parameterType, $"Failed to resolve {injectTypeInfo.Type.FullName} : {ex.Message}");
                        }
                    }
                    method.Invoke(obj, parameterValues);
                }
                finally
                {
                    CappedArrayPool <object> .Shared8Limit.Return(parameterValues);
                }
            }
        }
 static void InjectUnityEngineObject <T>(IObjectResolver resolver, T instance) where T : UnityEngine.Object
 {
     if (instance is GameObject gameObject)
     {
         resolver.InjectGameObject(gameObject);
     }
     else
     {
         resolver.Inject(instance);
     }
 }
 public TypeDefinition(Type type, int saveId, IObjectResolver objectResolver)
     : base(type, (SaveId) new TypeSaveId(saveId))
 {
     this._isClass                 = this.Type.IsClass;
     this._errors                  = new List <string>();
     this._properties              = new Dictionary <MemberTypeId, PropertyDefinition>();
     this._fields                  = new Dictionary <MemberTypeId, FieldDefinition>();
     this.MemberDefinitions        = new List <MemberDefinition>();
     this.CustomFields             = new List <CustomField>();
     this._initializationCallbacks = new List <MethodInfo>();
     this.ObjectResolver           = objectResolver;
 }
        public static T Instantiate <T>(
            this IObjectResolver resolver,
            T prefab,
            Vector3 position,
            Quaternion rotation)
            where T : UnityEngine.Object
        {
            var instance = UnityEngine.Object.Instantiate(prefab, position, rotation);

            InjectUnityEngineObject(resolver, instance);
            return(instance);
        }
 public object SpawnInstance(IObjectResolver resolver)
 {
     if (destination.Find)
     {
         return(FindComponent(resolver));
     }
     if (destination.Prefab != null)
     {
         return(InstantiatePrefab(resolver));
     }
     return(InstantiateNewGameObject(resolver));
 }
        protected void EmitCallbacks(IObjectResolver container)
        {
            if (buildCallbacks == null)
            {
                return;
            }

            foreach (var callback in buildCallbacks)
            {
                callback.Invoke(container);
            }
        }
 public void SetUp()
 {
     theObjectResolver = ObjectResolver.Basic();
     theResolver = new ValidationTargetResolver(theObjectResolver);
 }
Exemple #32
0
 public override void InitializeForView(IObjectResolver resolver)
 {
     Recipe = resolver.Resolve<IRecipeProvider>().Get(RecipeId);
 }
 public ValidationTargetResolver(IObjectResolver resolver)
 {
     _resolver = resolver;
 }
 public RecordingObjectResolver(IDebugReport report, ObjectResolver resolver)
 {
     _report = report;
     _resolver = resolver;
 }
Exemple #35
0
 public void Resolve(IObjectResolver aHandler)
 {
     aHandler.Resolve(this);
 }