javascriptconvertercollection.cs

来自「AJAX开发工具包」· CS 代码 · 共 110 行

CS
110
字号
using System;
using System.Collections;

namespace AjaxPro
{
	/// <summary>
	/// Represents a collection of JavaScriptConverters.
	/// </summary>
	internal class JavaScriptConverterCollection : CollectionBase
	{
		#region CollectionBase Members

		internal IJavaScriptConverter this[int index]
		{
			get  
			{
				return((IJavaScriptConverter)List[index]);
			}
			set  
			{
				List[index] = value;
			}
		}

		internal int Add(IJavaScriptConverter value)  
		{
			return(List.Add(value));
		}

		internal int IndexOf(IJavaScriptConverter value)  
		{
			return(List.IndexOf(value));
		}

		internal void Insert(int index, IJavaScriptConverter value)  
		{
			List.Insert(index, value);
		}

		internal void Remove(IJavaScriptConverter value)
		{
			List.Remove(value);
		}

		internal bool Contains(IJavaScriptConverter value)  
		{
			// If value is not of type Int16, this will return false.
			return(List.Contains(value));
		}

		internal IJavaScriptConverter GetConverter(Type t, JavaScriptConverterDirectionType serializationType)
		{
			Type[] types = null;

			for(int i=0; i<List.Count; i++)			
			{
				switch(serializationType)
				{
					case JavaScriptConverterDirectionType.Serialize:

						types = this[i].SerializableTypes;
						break;

					case JavaScriptConverterDirectionType.Deserialize:

						types = this[i].DeserializableTypes;
						break;
				}

				if(types == null)
					continue;

				foreach(Type type in types)
				{
					if(type.IsAssignableFrom(t))
						return this[i];
				}
			}

			return null;
		}

		protected override void OnInsert(int index, Object value)
		{
			if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
				throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
		}

		protected override void OnRemove( int index, Object value )  
		{
			if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
				throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
		}

		protected override void OnSet( int index, Object oldValue, Object newValue )  
		{
			if(newValue.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
				throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
		}

		protected override void OnValidate(Object value)
		{
			if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
				throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
		}

		#endregion
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?