PolicyVersionConverter.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System;
  7. using System.ServiceModel.Description;
  8. using System.ComponentModel;
  9. using System.ComponentModel.Design.Serialization;
  10. using System.ServiceModel;
  11. using System.Globalization;
  12. class PolicyVersionConverter : TypeConverter
  13. {
  14. public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
  15. {
  16. if (typeof(string) == sourceType)
  17. {
  18. return true;
  19. }
  20. return base.CanConvertFrom(context, sourceType);
  21. }
  22. public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
  23. {
  24. if (typeof(InstanceDescriptor) == destinationType)
  25. {
  26. return true;
  27. }
  28. return base.CanConvertTo(context, destinationType);
  29. }
  30. public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
  31. {
  32. if (value is string)
  33. {
  34. string policyVersion = (string)value;
  35. PolicyVersion retval = null;
  36. switch (policyVersion)
  37. {
  38. case ConfigurationStrings.Policy12:
  39. retval = PolicyVersion.Policy12;
  40. break;
  41. case ConfigurationStrings.Policy15:
  42. retval = PolicyVersion.Policy15;
  43. break;
  44. case ConfigurationStrings.Default:
  45. retval = PolicyVersion.Default;
  46. break;
  47. default:
  48. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value",
  49. SR.GetString(SR.ConfigInvalidClassFactoryValue, policyVersion, typeof(PolicyVersion).FullName)));
  50. }
  51. return retval;
  52. }
  53. return base.ConvertFrom(context, culture, value);
  54. }
  55. public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
  56. {
  57. if (typeof(string) == destinationType && value is PolicyVersion)
  58. {
  59. string retval = null;
  60. PolicyVersion policyVersion = (PolicyVersion)value;
  61. if (policyVersion == PolicyVersion.Default)
  62. {
  63. retval = ConfigurationStrings.Default;
  64. }
  65. else if (policyVersion == PolicyVersion.Policy12)
  66. {
  67. retval = ConfigurationStrings.Policy12;
  68. }
  69. else if (policyVersion == PolicyVersion.Policy15)
  70. {
  71. retval = ConfigurationStrings.Policy15;
  72. }
  73. else
  74. {
  75. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value",
  76. SR.GetString(SR.ConfigInvalidClassInstanceValue, typeof(PolicyVersion).FullName)));
  77. }
  78. return retval;
  79. }
  80. return base.ConvertTo(context, culture, value, destinationType);
  81. }
  82. }
  83. }