mscorlib(4.0.0.0) API with additions
EncodingProvider.cs
2 
3 namespace System.Text
4 {
6  [ComVisible(true)]
7  [__DynamicallyInvokable]
8  public abstract class EncodingProvider
9  {
10  private static object s_InternalSyncObject = new object();
11 
12  private static volatile EncodingProvider[] s_providers;
13 
15  [__DynamicallyInvokable]
17  {
18  }
19 
23  [__DynamicallyInvokable]
24  public abstract Encoding GetEncoding(string name);
25 
29  [__DynamicallyInvokable]
30  public abstract Encoding GetEncoding(int codepage);
31 
37  [__DynamicallyInvokable]
38  public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
39  {
40  Encoding encoding = GetEncoding(name);
41  if (encoding != null)
42  {
43  encoding = (Encoding)GetEncoding(name).Clone();
44  encoding.EncoderFallback = encoderFallback;
45  encoding.DecoderFallback = decoderFallback;
46  }
47  return encoding;
48  }
49 
55  [__DynamicallyInvokable]
56  public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
57  {
58  Encoding encoding = GetEncoding(codepage);
59  if (encoding != null)
60  {
61  encoding = (Encoding)GetEncoding(codepage).Clone();
62  encoding.EncoderFallback = encoderFallback;
63  encoding.DecoderFallback = decoderFallback;
64  }
65  return encoding;
66  }
67 
68  internal static void AddProvider(EncodingProvider provider)
69  {
70  if (provider == null)
71  {
72  throw new ArgumentNullException("provider");
73  }
74  lock (s_InternalSyncObject)
75  {
76  if (s_providers == null)
77  {
78  s_providers = new EncodingProvider[1]
79  {
80  provider
81  };
82  }
83  else if (Array.IndexOf(s_providers, provider) < 0)
84  {
85  EncodingProvider[] array = new EncodingProvider[s_providers.Length + 1];
86  Array.Copy(s_providers, array, s_providers.Length);
87  array[array.Length - 1] = provider;
88  s_providers = array;
89  }
90  }
91  }
92 
93  internal static Encoding GetEncodingFromProvider(int codepage)
94  {
95  if (s_providers == null)
96  {
97  return null;
98  }
99  EncodingProvider[] array = s_providers;
100  EncodingProvider[] array2 = array;
101  foreach (EncodingProvider encodingProvider in array2)
102  {
103  Encoding encoding = encodingProvider.GetEncoding(codepage);
104  if (encoding != null)
105  {
106  return encoding;
107  }
108  }
109  return null;
110  }
111 
112  internal static Encoding GetEncodingFromProvider(string encodingName)
113  {
114  if (s_providers == null)
115  {
116  return null;
117  }
118  EncodingProvider[] array = s_providers;
119  EncodingProvider[] array2 = array;
120  foreach (EncodingProvider encodingProvider in array2)
121  {
122  Encoding encoding = encodingProvider.GetEncoding(encodingName);
123  if (encoding != null)
124  {
125  return encoding;
126  }
127  }
128  return null;
129  }
130 
131  internal static Encoding GetEncodingFromProvider(int codepage, EncoderFallback enc, DecoderFallback dec)
132  {
133  if (s_providers == null)
134  {
135  return null;
136  }
137  EncodingProvider[] array = s_providers;
138  EncodingProvider[] array2 = array;
139  foreach (EncodingProvider encodingProvider in array2)
140  {
141  Encoding encoding = encodingProvider.GetEncoding(codepage, enc, dec);
142  if (encoding != null)
143  {
144  return encoding;
145  }
146  }
147  return null;
148  }
149 
150  internal static Encoding GetEncodingFromProvider(string encodingName, EncoderFallback enc, DecoderFallback dec)
151  {
152  if (s_providers == null)
153  {
154  return null;
155  }
156  EncodingProvider[] array = s_providers;
157  EncodingProvider[] array2 = array;
158  foreach (EncodingProvider encodingProvider in array2)
159  {
160  Encoding encoding = encodingProvider.GetEncoding(encodingName, enc, dec);
161  if (encoding != null)
162  {
163  return encoding;
164  }
165  }
166  return null;
167  }
168  }
169 }
Represents a character encoding.To browse the .NET Framework source code for this type,...
Definition: Encoding.cs:15
The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method th...
abstract Encoding GetEncoding(string name)
Returns the encoding with the specified name.
virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
Returns the encoding associated with the specified name. Parameters specify an error handler for char...
virtual object Clone()
When overridden in a derived class, creates a shallow copy of the current T:System....
Definition: Encoding.cs:1474
Definition: __Canon.cs:3
DecoderFallback DecoderFallback
Gets or sets the T:System.Text.DecoderFallback object for the current T:System.Text....
Definition: Encoding.cs:884
EncoderFallback EncoderFallback
Gets or sets the T:System.Text.EncoderFallback object for the current T:System.Text....
Definition: Encoding.cs:857
Provides a failure-handling mechanism, called a fallback, for an input character that cannot be conve...
Provides a failure-handling mechanism, called a fallback, for an encoded input byte sequence that can...
EncodingProvider()
Initializes a new instance of the T:System.Text.EncodingProvider class.
Provides the base class for an encoding provider, which supplies encodings that are unavailable on a ...
virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
Returns the encoding associated with the specified code page identifier. Parameters specify an error ...