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