TransactionProtocolConverter.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //-----------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System;
  7. using System.ComponentModel;
  8. using System.ComponentModel.Design.Serialization;
  9. using System.Globalization;
  10. class TransactionProtocolConverter : TypeConverter
  11. {
  12. public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
  13. {
  14. if (typeof(string) == sourceType)
  15. {
  16. return true;
  17. }
  18. return base.CanConvertFrom(context, sourceType);
  19. }
  20. public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
  21. {
  22. if (typeof(InstanceDescriptor) == destinationType)
  23. {
  24. return true;
  25. }
  26. return base.CanConvertTo(context, destinationType);
  27. }
  28. public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
  29. {
  30. string protocol = value as string;
  31. #pragma warning suppress 56507 // [....], Really checking for null (meaning value was not a string) versus String.Empty
  32. if (protocol != null)
  33. {
  34. switch (protocol)
  35. {
  36. case ConfigurationStrings.OleTransactions:
  37. return TransactionProtocol.OleTransactions;
  38. case ConfigurationStrings.WSAtomicTransactionOctober2004:
  39. return TransactionProtocol.WSAtomicTransactionOctober2004;
  40. case ConfigurationStrings.WSAtomicTransaction11:
  41. return TransactionProtocol.WSAtomicTransaction11;
  42. default:
  43. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.ConfigInvalidTransactionFlowProtocolValue, protocol));
  44. }
  45. }
  46. return base.ConvertFrom(context, culture, value);
  47. }
  48. public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
  49. {
  50. if (typeof(string) == destinationType && value is TransactionProtocol)
  51. {
  52. TransactionProtocol protocol = (TransactionProtocol)value;
  53. return protocol.Name;
  54. }
  55. return base.ConvertTo(context, culture, value, destinationType);
  56. }
  57. }
  58. }