예제 #1
0
        private void Register(Type type, Func <object> createInstanceDelegate, string instanceName = null)
        {
            MappingKey key = new MappingKey(type, instanceName);

            if (_mappings.ContainsKey(key))
            {
                _mappings.Remove(key);
            }
            _mappings.Add(key, createInstanceDelegate);
        }
예제 #2
0
        /// <summary>
        /// Tạo thể hiện có kiểu và tên được chỉ định.
        /// </summary>
        /// <param name="type">Kiểu dữ liệu của đối tượng được tạo</param>
        /// <param name="name">Tên của đối tượng được tạo</param>
        /// <returns>Đối tượng được tạo</returns>
        public object Resolve(Type type, string name)
        {
            var           key = new MappingKey(type, name);
            Func <object> createInstance;

            if (_mappings.TryGetValue(key, out createInstance))
            {
                var instance = createInstance();
                return(instance);
            }

            return(CreateInstance(type));
        }
예제 #3
0
        /// <summary>
        /// Xác định đối tượng được chỉ định có bằng đối tượng này hay không
        /// </summary>
        /// <param name="obj">Đối tượng để so sánh với đối tượng này</param>
        /// <returns>
        /// <c>true</c> nếu đối tượng được chỉ định bằng đối tượng này; ngược lại, <c>false</c>.
        /// </returns>
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            MappingKey compareTo = obj as MappingKey;

            if (ReferenceEquals(this, compareTo))
            {
                return(true);
            }

            if (compareTo == null)
            {
                return(false);
            }

            return(Type.Equals(compareTo.Type) &&
                   string.Equals(InstanceName, compareTo.InstanceName, StringComparison.InvariantCultureIgnoreCase));
        }
예제 #4
0
        private bool IsRegistered(Type type, string instanceName = null)
        {
            var key = new MappingKey(type, instanceName);

            return(_mappings.ContainsKey(key));
        }