public object GiveObjectById(string id) { object instance = instanceMappings[id]; if (instance == null) { DecoratedType decoratedType = (DecoratedType)implementationMappings[id]; if (decoratedType == null) { throw new ApplicationException("Unknown object key : " + id); } else { return(Instantiate(decoratedType, id)); } } else { DecoratedInstance decoratedInstance = (DecoratedInstance)instance; if (decoratedInstance.Decorator != null) { return(Instantiate(decoratedInstance.Decorator, id, decoratedInstance.Instance)); } else { return(decoratedInstance.Instance); } } }
private object Instantiate(DecoratedType decoratedType, string id, params object[] args) { object baseObject = Instantiate(decoratedType.Type, id, args); DecoratedType decorator = decoratedType.Decorator; if (decorator != null) { return(Instantiate(decorator, id, baseObject)); } else { return(baseObject); } }
public TypeDecoratorable Decorate(Type type) { decorator = new DecoratedType(type); return(decorator); }
public TypeDecoratorable CreateImplementationMapping(string identifier, Type type) { implementationMappings[identifier] = new DecoratedType(type); return (TypeDecoratorable) implementationMappings[identifier]; }
private object Instantiate(DecoratedType decoratedType, string id, params object[] args) { object baseObject = Instantiate(decoratedType.Type, id, args); DecoratedType decorator = decoratedType.Decorator; if (decorator != null) return Instantiate(decorator, id, baseObject); else return baseObject; }
public TypeDecoratorable CreateImplementationMapping(string identifier, Type type) { implementationMappings[identifier] = new DecoratedType(type); return((TypeDecoratorable)implementationMappings[identifier]); }
public TypeDecoratorable Decorate(Type type) { decorator = new DecoratedType(type); return decorator; }