/// <summary> /// Bind an object to the object's type with specific initialization type and with supplied id as Key. This operation will ignore /// the [Singleton] or [Prototype] attributes that are declared in class attribute. /// </summary> /// <param name="type">Type of object to bind to.</param> /// <param name="obj">Target object.</param> /// <param name="instType">The initialization type.</param> /// <param name="id">Custom id of the object.</param> public void Bind <T>(T obj, InstantiationType instType, string id) { Type type = typeof(T); Dictionary <string, IoCObject> objectMap; if (!_objMap.TryGetValue(type, out objectMap)) { objectMap = new Dictionary <string, IoCObject>(); } objectMap[id] = new IoCObject(instType, obj); _objMap[type] = objectMap; }
/// <summary> /// Get the object with IoCObject. Returns the supplied object if instantiation type is singleton. /// Returns a cloned object of the supplied object if instantiation type is prototype. /// </summary> /// <returns></returns> public object GetObj(IoCObject iocObj) { if (iocObj.InstantiationType == InstantiationType.SINGLETON) { return(iocObj.Object);; } else if (iocObj.InstantiationType == InstantiationType.PROTOTYPE) { return(CloneObj(iocObj.Object)); } else { return(null); } }