public DictionaryAdapterInstance(IDictionary dictionary, PropertyDescriptor descriptor, 
										 IDictionaryAdapterFactory factory)
		{
			Dictionary = dictionary;
			Descriptor = descriptor;
			Factory = factory;
		}
		private void InitializeMeta(IDictionaryAdapterFactory factory, IDictionaryMetaInitializer[] metaInitializers)
		{
			foreach (var metaInitializer in metaInitializers)
			{
				metaInitializer.Initialize(factory, this);
			}
		}
示例#3
0
 void IDictionaryMetaInitializer.Initialize(
     IDictionaryAdapterFactory factory,
     DictionaryAdapterMeta meta
     )
 {
     meta.SetXmlMeta(new XmlMetadata(meta, reservedNamespaceUris));
 }
示例#4
0
 public virtual void Initialize(AspViewEngine newViewEngine, TextWriter output, IEngineContext newContext,
                                IController newController, IControllerContext newControllerContext, IDictionary parentProperties)
 {
     if (initialized)
     {
         throw new ApplicationException("Sorry, but a view instance cannot be initialized twice");
     }
     initialized       = true;
     viewEngine        = newViewEngine;
     OutputWriter      = output;
     Context           = newContext;
     Controller        = newController;
     controllerContext = newControllerContext;
     if (parentProperties == null)
     {
         Properties = ExtractProperties();
     }
     else
     {
         Properties = new ViewPropertiesDictionary(parentProperties);
     }
     if (newContext != null && newContext.Services != null && newContext.Services.DictionaryAdapterFactory != null)
     {
         dictionaryAdapterFactory = newContext.Services.DictionaryAdapterFactory;
     }
     else
     {
         dictionaryAdapterFactory = new DictionaryAdapterFactory();
     }
     outputWriters = new Stack <TextWriter>();
     viewFilters   = new Stack <IViewFilter>();
 }
示例#5
0
        void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta dictionaryMeta)
        {
            var              type             = dictionaryMeta.Type;
            bool?            qualified        = null;
            bool?            isNullable       = null;
            string           defaultNamespace = null;
            XmlTypeAttribute xmlType          = null;
            XmlRootAttribute xmlRoot          = null;
            List <Type>      xmlIncludes      = null;

            new BehaviorVisitor()
            .OfType <XmlTypeAttribute>(attrib => xmlType = attrib)
            .OfType <XmlRootAttribute>(attrib => xmlRoot = attrib)
            .OfType <XmlDefaultsAttribute>(attrib =>
            {
                qualified  = attrib.Qualified;
                isNullable = attrib.IsNullable;
            })
            .OfType <XmlNamespaceAttribute>(attrib =>
            {
                if (attrib.Default)
                {
                    defaultNamespace = attrib.NamespaceUri;
                }
            })
            .OfType <XmlIncludeAttribute>(attrib =>
            {
                xmlIncludes = xmlIncludes ?? new List <Type>();
                if (type != attrib.Type && type.IsAssignableFrom(attrib.Type))
                {
                    xmlIncludes.Add(attrib.Type);
                }
            })
            .Apply(dictionaryMeta.Behaviors);

            if (xmlType == null)
            {
                xmlType = new XmlTypeAttribute();
            }

            if (string.IsNullOrEmpty(xmlType.TypeName))
            {
                xmlType.TypeName = type.Name;
                if (xmlType.TypeName.StartsWith("I"))
                {
                    xmlType.TypeName = xmlType.TypeName.Substring(1);
                }
            }

            if (xmlType.Namespace == null)
            {
                xmlType.Namespace = defaultNamespace;
            }

            dictionaryMeta.SetXmlMeta(new XmlMetadata(type, qualified, isNullable, xmlType, xmlRoot, xmlIncludes));
        }
示例#6
0
		void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta dictionaryMeta)
		{
			var type = dictionaryMeta.Type;
			bool? qualified = null;
			bool? isNullable = null;
			string defaultNamespace = null;
			XmlTypeAttribute xmlType = null;
			XmlRootAttribute xmlRoot = null;
			List<Type> xmlIncludes = null;

			new BehaviorVisitor()
				.OfType<XmlTypeAttribute>(attrib => xmlType = attrib)
				.OfType<XmlRootAttribute>(attrib => xmlRoot = attrib)
				.OfType<XmlDefaultsAttribute>(attrib =>
				{
					qualified = attrib.Qualified;
					isNullable = attrib.IsNullable;
				})
				.OfType<XmlNamespaceAttribute>(attrib =>
				{
					if (attrib.Default)
					{
						defaultNamespace = attrib.NamespaceUri;
					}
				})
				.OfType<XmlIncludeAttribute>(attrib =>
				{
					xmlIncludes = xmlIncludes ?? new List<Type>();
					if (type != attrib.Type && type.IsAssignableFrom(attrib.Type))
					{
						xmlIncludes.Add(attrib.Type);
					}
				})
				.Apply(dictionaryMeta.Behaviors);

			if (xmlType == null)
			{
				xmlType = new XmlTypeAttribute();
			}

			if (string.IsNullOrEmpty(xmlType.TypeName))
			{
				xmlType.TypeName = type.Name;
				if (xmlType.TypeName.StartsWith("I"))
				{
					xmlType.TypeName = xmlType.TypeName.Substring(1);
				}
			}

			if (xmlType.Namespace == null)
			{
				xmlType.Namespace = defaultNamespace;
			}

			dictionaryMeta.SetXmlMeta(new XmlMetadata(type, qualified, isNullable, xmlType, xmlRoot, xmlIncludes));
		}
		bool IDictionaryPropertySetter.SetPropertyValue(
			IDictionaryAdapterFactory factory, IDictionary dictionary,
			string key, ref object value, PropertyDescriptor property)
		{
			if (value != null)
			{
				value = GetPropertyAsString(property, value);
			}
			return true;
		}
        public DictionaryAdapterInstance(IDictionary dictionary, DictionaryAdapterMeta meta,
                                         PropertyDescriptor descriptor, IDictionaryAdapterFactory factory)
        {
            Dictionary = dictionary;
            Descriptor = descriptor;
            Factory    = factory;

            Properties   = meta.Properties;
            Initializers = meta.Initializers;
            MergeBehaviorOverrides(meta);
        }
		public DictionaryAdapterInstance(IDictionary dictionary, DictionaryAdapterMeta meta,
										 PropertyDescriptor descriptor, IDictionaryAdapterFactory factory)
		{
			Dictionary = dictionary;
			Descriptor = descriptor;
			Factory = factory;

			Properties = meta.Properties;
			Initializers = meta.Initializers;
			MergeBehaviorOverrides(meta);
		}
		private void InitializeMeta(IDictionaryAdapterFactory factory, DictionaryDescriptor descriptor)
		{
			if (descriptor != null)
			{
				MetaInitializers = MetaInitializers.Prioritize(descriptor.MetaInitializers).ToArray();
			}

			foreach (var metaInitializer in MetaInitializers)
			{
				metaInitializer.Initialize(factory, this);
			}
		}
示例#11
0
        private void InitializeMeta(IDictionaryAdapterFactory factory, DictionaryDescriptor descriptor)
        {
            if (descriptor != null)
            {
                MetaInitializers = MetaInitializers.Prioritize(descriptor.MetaInitializers).ToArray();
            }

            foreach (var metaInitializer in MetaInitializers)
            {
                metaInitializer.Initialize(factory, this);
            }
        }
示例#12
0
        void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta dictionaryMeta)
        {
            var              type             = dictionaryMeta.Type;
            string           defaultNamespace = null;
            XmlTypeAttribute xmlType          = null;
            XmlRootAttribute xmlRoot          = null;
            List <Type>      xmlIncludes      = null;

            new BehaviorVisitor()
            .OfType <XmlTypeAttribute>(attrib =>
            {
                xmlType = attrib;
            })
            .OfType <XmlRootAttribute>(attrib =>
            {
                xmlRoot = attrib;
            })
            .OfType <XmlNamespaceAttribute>(attrib =>
            {
                if (attrib.Default)
                {
                    defaultNamespace = attrib.NamespaceUri;
                }
            })
            .OfType <XmlIncludeAttribute>(attrib =>
            {
                xmlIncludes = xmlIncludes ?? new List <Type>();
                if (type != attrib.Type && type.IsAssignableFrom(attrib.Type))
                {
                    xmlIncludes.Add(attrib.Type);
                }
            })
            .Apply(dictionaryMeta.Behaviors);

            if (xmlType == null)
            {
                xmlType = new XmlTypeAttribute
                {
                    TypeName  = type.Name,
                    Namespace = defaultNamespace
                };
                if (xmlType.TypeName.StartsWith("I"))
                {
                    xmlType.TypeName = xmlType.TypeName.Substring(1);
                }
            }
            else if (xmlType.Namespace == null)
            {
                xmlType.Namespace = defaultNamespace;
            }

            dictionaryMeta.SetXmlMeta(new XmlMetadata(type, xmlType, xmlRoot, xmlIncludes));
        }
示例#13
0
        public DictionaryAdapterMeta(Type type, IDictionaryInitializer[] initializers,
                                     IDictionaryMetaInitializer[] metaInitializers,
                                     object[] behaviors, IDictionary <String, PropertyDescriptor> properties,
                                     DictionaryDescriptor descriptor, IDictionaryAdapterFactory factory)
        {
            Type             = type;
            Initializers     = initializers;
            MetaInitializers = metaInitializers;
            Behaviors        = behaviors;
            Properties       = properties;

            InitializeMeta(factory, descriptor);
        }
		public DictionaryAdapterMeta(Type type, IDictionaryInitializer[] initializers,
									 IDictionaryMetaInitializer[] metaInitializers,
									 object[] behaviors, IDictionary<String, PropertyDescriptor> properties,
									 IDictionaryAdapterFactory factory)
		{
			Type = type;
			Initializers = initializers;
			MetaInitializers = metaInitializers;
			Behaviors = behaviors;
			Properties = properties;

			InitializeMeta(factory, metaInitializers);
		}
		void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta dictionaryMeta)
		{
			var type = dictionaryMeta.Type;
			string defaultNamespace = null;
			XmlTypeAttribute xmlType = null;
			XmlRootAttribute xmlRoot = null;
			List<Type> xmlIncludes = null;

			new BehaviorVisitor()
				.OfType<XmlTypeAttribute>(attrib =>
				{
					xmlType = attrib;
				})
				.OfType<XmlRootAttribute>(attrib =>
				{
					xmlRoot = attrib;
				})
				.OfType<XmlNamespaceAttribute>(attrib =>
				{
					if (attrib.Default)
						defaultNamespace = attrib.NamespaceUri;
				})
				.OfType<XmlIncludeAttribute>(attrib =>
				{
					xmlIncludes = xmlIncludes ?? new List<Type>();
					if (type != attrib.Type && type.IsAssignableFrom(attrib.Type))
					{
						xmlIncludes.Add(attrib.Type);
					}
				})
				.Apply(dictionaryMeta.Behaviors);

			if (xmlType == null)
			{
				xmlType = new XmlTypeAttribute
				{
					TypeName = type.Name,
					Namespace = defaultNamespace
				};
				if (xmlType.TypeName.StartsWith("I"))
				{
					xmlType.TypeName = xmlType.TypeName.Substring(1);
				}
			}
			else if (xmlType.Namespace == null)
				xmlType.Namespace = defaultNamespace;

			dictionaryMeta.SetXmlMeta(new XmlMetadata(type, xmlType, xmlRoot, xmlIncludes));
		}
示例#16
0
        public DictionaryAdapterMeta(Type type, Type implementation, object[] behaviors, IDictionaryMetaInitializer[] metaInitializers,
                                     IDictionaryInitializer[] initializers, IDictionary <String, PropertyDescriptor> properties,
                                     IDictionaryAdapterFactory factory, Func <DictionaryAdapterInstance, IDictionaryAdapter> creator)
        {
            Type             = type;
            Implementation   = implementation;
            Behaviors        = behaviors;
            MetaInitializers = metaInitializers;
            Initializers     = initializers;
            Properties       = properties;
            Factory          = factory;
            this.creator     = creator;

            InitializeMeta();
        }
		object IDictionaryPropertyGetter.GetPropertyValue(
			IDictionaryAdapterFactory factory, IDictionary dictionary,
			string key, object storedValue, PropertyDescriptor property)
		{
			if (storedValue == null)
			{
				PropertyDescriptor descriptor = 
					new PropertyDescriptor(property.Property);
				descriptor.AddKeyBuilder(new DictionaryKeyPrefixAttribute(key));

				return factory.GetAdapter(
					property.Property.PropertyType, dictionary, descriptor);
			}

			return storedValue;
		}
示例#18
0
		/// <summary>
		/// Gets the effective dictionary value.
		/// </summary>
		/// <param name="factory">The dictionary factory.</param>
		/// <param name="dictionary">The dictionary.</param>
		/// <param name="key">The key.</param>
		/// <param name="storedValue">The stored value.</param>
		/// <param name="property">The property.</param>
		/// <returns>The effective property value.</returns>
		public object GetPropertyValue(IDictionaryAdapterFactory factory,
		                               IDictionary dictionary, string key,
		                               object storedValue, PropertyDescriptor property)
		{
			Type propertyType = property.PropertyType;

			if (storedValue != null && !propertyType.IsInstanceOfType(storedValue))
			{
				if (converter != null && converter.CanConvertFrom(storedValue.GetType()))
				{
					return converter.ConvertFrom(storedValue);
				}
			}

			return storedValue;
		}
示例#19
0
 public virtual void Initialize(AspViewEngine newViewEngine, TextWriter output, IRailsEngineContext newContext, Controller newController)
 {
     if (initialized)
     {
         throw new ApplicationException("Sorry, but a view instance cannot be initialized twice");
     }
     initialized  = true;
     viewEngine   = newViewEngine;
     outputWriter = output;
     context      = newContext;
     controller   = newController;
     InitProperties();
     dictionaryAdapterFactory = new DictionaryAdapterFactory();
     outputWriters            = new Stack <TextWriter>();
     viewFilters = new Stack <IViewFilter>();
 }
示例#20
0
        public DictionaryAdapterInstance(IDictionary dictionary, DictionaryAdapterMeta meta,
                                         PropertyDescriptor descriptor, IDictionaryAdapterFactory factory)
        {
            Dictionary = dictionary;
            Descriptor = descriptor;
            Factory    = factory;

            List <IDictionaryBehavior> behaviors;

            if (null == descriptor || null == (behaviors = descriptor.BehaviorsInternal))
            {
                Initializers = meta.Initializers;
                Properties   = MergeProperties(meta.Properties);
            }
            else
            {
                Initializers = MergeInitializers(meta.Initializers, behaviors);
                Properties   = MergeProperties(meta.Properties, behaviors);
            }
        }
		public DictionaryAdapterInstance(IDictionary dictionary, DictionaryAdapterMeta meta,
										 PropertyDescriptor descriptor, IDictionaryAdapterFactory factory)
		{
			Dictionary = dictionary;
			Descriptor = descriptor;
			Factory    = factory;

			List<IDictionaryBehavior> behaviors;

			if (null == descriptor || null == (behaviors = descriptor.BehaviorsInternal))
			{
				Initializers = meta.Initializers;
				Properties   = MergeProperties(meta.Properties);
			}
			else
			{
				Initializers = MergeInitializers(meta.Initializers, behaviors);
				Properties   = MergeProperties(meta.Properties, behaviors);
			}
		}
示例#22
0
        public static T GetAdapter <T>(this IDictionaryAdapterFactory factory, NameValueCollection nameValueCollection, PropertyDescriptor propertyDescriptor)
        {
            var settings = (T)factory.GetAdapter(typeof(T), new NameValueCollectionAdapter(nameValueCollection), propertyDescriptor);

            return(settings);
        }
 public DefaultLayoutCommonFilter(IDepartmentsRepository departmentsRepository, IDictionaryAdapterFactory dictionaryAdapterFactory)
 {
     this.departmentsRepository = departmentsRepository;
     this.dictionaryAdapterFactory = dictionaryAdapterFactory;
 }
示例#24
0
		public virtual void Initialize(AspViewEngine newViewEngine, TextWriter output, IEngineContext newContext,
		                               IController newController, IControllerContext newControllerContext)
		{
			if (initialized)
				throw new ApplicationException("Sorry, but a view instance cannot be initialized twice");
			initialized = true;
			viewEngine = newViewEngine;
			outputWriter = output;
			context = newContext;
			controller = newController;
			controllerContext = newControllerContext;
			InitProperties();
			dictionaryAdapterFactory = new DictionaryAdapterFactory();
			outputWriters = new Stack<TextWriter>();
			viewFilters = new Stack<IViewFilter>();
		}
示例#25
0
 protected override void Initialize()
 {
     base.Initialize();
     dictionaryAdapterFactory = new DictionaryAdapterFactory();
 }
示例#26
0
 void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta meta)
 {
     meta.SetXmlMeta(new XmlMetadata(meta));
 }
示例#27
0
		void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta meta)
		{
			meta.SetXmlMeta(new XmlMetadata(meta, reservedNamespaceUris));
		}
示例#28
0
        // Dependencies:
        //  IDictionaryAdapterFactory : DictionaryAdapterFactory

        public CastleObjectMapper(IDictionaryAdapterFactory dictionaryAdapterFactory = null)
        {
            _dictionaryAdapterFactory = dictionaryAdapterFactory ?? new DictionaryAdapterFactory();
        }
示例#29
0
		void IDictionaryMetaInitializer.Initialize(IDictionaryAdapterFactory factory, DictionaryAdapterMeta meta)
		{
			meta.SetXmlMeta(new XmlMetadata(meta));
		}
示例#30
0
		/// <summary>
		/// Gets the property value.
		/// </summary>
		/// <param name="factory">The factory.</param>
		/// <param name="dictionary">The dictionary.</param>
		/// <param name="key">The key.</param>
		/// <param name="storedValue">The stored value.</param>
		/// <param name="descriptor">The descriptor.</param>
		/// <returns></returns>
		public object GetPropertyValue(
			IDictionaryAdapterFactory factory, IDictionary dictionary,
			string key, object storedValue, PropertyDescriptor descriptor)
		{
			if (getters != null)
			{
				foreach(IDictionaryPropertyGetter getter in getters)
				{
					storedValue = getter.GetPropertyValue(
						factory, dictionary, key, storedValue, this);
				}
			}

			if (descriptor != null && descriptor.Getters != null)
			{
				foreach (IDictionaryPropertyGetter getter in descriptor.Getters)
				{
					storedValue = getter.GetPropertyValue(
						factory, dictionary, key, storedValue, this);
				}
			}

			return storedValue;
		}
示例#31
0
		/// <summary>
		/// Sets the property value.
		/// </summary>
		/// <param name="factory">The factory.</param>
		/// <param name="dictionary">The dictionary.</param>
		/// <param name="key">The key.</param>
		/// <param name="value">The value.</param>
		/// <param name="descriptor">The descriptor.</param>
		/// <returns></returns>
		public bool SetPropertyValue(
			IDictionaryAdapterFactory factory, IDictionary dictionary,
			string key, ref object value, PropertyDescriptor descriptor)
		{
			bool consumed = false;

			if (setters != null)
			{
				foreach(IDictionaryPropertySetter setter in setters)
				{
					if (!setter.SetPropertyValue(
						factory, dictionary, key, ref value, this))
					{
						consumed = true;
					}
				}
			}

			if (descriptor != null && descriptor.Setters != null)
			{
				foreach (IDictionaryPropertySetter setter in descriptor.Setters)
				{
					if (!setter.SetPropertyValue(
						factory, dictionary, key, ref value, this))
					{
						consumed = true;
					}
				}
			}

			return !consumed;
		}