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); }
/// <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)); }
/// <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)); }
private bool IsRegistered(Type type, string instanceName = null) { var key = new MappingKey(type, instanceName); return(_mappings.ContainsKey(key)); }