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);
            }
        }
示例#3
0
 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]);
 }
示例#7
0
 public TypeDecoratorable Decorate(Type type)
 {
     decorator = new DecoratedType(type);
     return decorator;
 }