JavaScriptConverterCollection.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:3k
源码类别:

Ajax

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. namespace AjaxPro
  4. {
  5. /// <summary>
  6. /// Represents a collection of JavaScriptConverters.
  7. /// </summary>
  8. internal class JavaScriptConverterCollection : CollectionBase
  9. {
  10. #region CollectionBase Members
  11. internal IJavaScriptConverter this[int index]
  12. {
  13. get  
  14. {
  15. return((IJavaScriptConverter)List[index]);
  16. }
  17. set  
  18. {
  19. List[index] = value;
  20. }
  21. }
  22. internal int Add(IJavaScriptConverter value)  
  23. {
  24. return(List.Add(value));
  25. }
  26. internal int IndexOf(IJavaScriptConverter value)  
  27. {
  28. return(List.IndexOf(value));
  29. }
  30. internal void Insert(int index, IJavaScriptConverter value)  
  31. {
  32. List.Insert(index, value);
  33. }
  34. internal void Remove(IJavaScriptConverter value)
  35. {
  36. List.Remove(value);
  37. }
  38. internal bool Contains(IJavaScriptConverter value)  
  39. {
  40. // If value is not of type Int16, this will return false.
  41. return(List.Contains(value));
  42. }
  43. internal IJavaScriptConverter GetConverter(Type t, JavaScriptConverterDirectionType serializationType)
  44. {
  45. Type[] types = null;
  46. for(int i=0; i<List.Count; i++)
  47. {
  48. switch(serializationType)
  49. {
  50. case JavaScriptConverterDirectionType.Serialize:
  51. types = this[i].SerializableTypes;
  52. break;
  53. case JavaScriptConverterDirectionType.Deserialize:
  54. types = this[i].DeserializableTypes;
  55. break;
  56. }
  57. if(types == null)
  58. continue;
  59. foreach(Type type in types)
  60. {
  61. if(type.IsAssignableFrom(t))
  62. return this[i];
  63. }
  64. }
  65. return null;
  66. }
  67. protected override void OnInsert(int index, Object value)
  68. {
  69. if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
  70. throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
  71. }
  72. protected override void OnRemove( int index, Object value )  
  73. {
  74. if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
  75. throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
  76. }
  77. protected override void OnSet( int index, Object oldValue, Object newValue )  
  78. {
  79. if(newValue.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
  80. throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
  81. }
  82. protected override void OnValidate(Object value)
  83. {
  84. if(value.GetType().IsAssignableFrom(typeof(IJavaScriptConverter)))
  85. throw new ArgumentException( "value must be of type IJavaScriptConverter.", "value" );
  86. }
  87. #endregion
  88. }
  89. }