Refactored HttpListenerPrefixCollection.cs
This commit is contained in:
		| @@ -1,32 +1,41 @@ | |||||||
| // | #region License | ||||||
| // HttpListenerPrefixCollection.cs | /* | ||||||
| //	Copied from System.Net.HttpListenerPrefixCollection.cs |  * HttpListenerPrefixCollection.cs | ||||||
| // |  * | ||||||
| // Author: |  * This code is derived from System.Net.HttpListenerPrefixCollection.cs of Mono | ||||||
| //	Gonzalo Paniagua Javier (gonzalo@novell.com) |  * (http://www.mono-project.com). | ||||||
| // |  * | ||||||
| // Copyright (c) 2005 Novell, Inc. (http://www.novell.com) |  * The MIT License | ||||||
| // Copyright (c) 2012-2013 sta.blockhead |  * | ||||||
| // |  * Copyright (c) 2005 Novell, Inc. (http://www.novell.com) | ||||||
| // Permission is hereby granted, free of charge, to any person obtaining |  * Copyright (c) 2012-2014 sta.blockhead | ||||||
| // a copy of this software and associated documentation files (the |  * | ||||||
| // "Software"), to deal in the Software without restriction, including |  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
| // without limitation the rights to use, copy, modify, merge, publish, |  * of this software and associated documentation files (the "Software"), to deal | ||||||
| // distribute, sublicense, and/or sell copies of the Software, and to |  * in the Software without restriction, including without limitation the rights | ||||||
| // permit persons to whom the Software is furnished to do so, subject to |  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
| // the following conditions: |  * copies of the Software, and to permit persons to whom the Software is | ||||||
| //  |  * furnished to do so, subject to the following conditions: | ||||||
| // The above copyright notice and this permission notice shall be |  * | ||||||
| // included in all copies or substantial portions of the Software. |  * The above copyright notice and this permission notice shall be included in | ||||||
| //  |  * all copies or substantial portions of the Software. | ||||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  * | ||||||
| // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
| // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
| // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
| // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
| // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
| // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
| // |  * THE SOFTWARE. | ||||||
|  |  */ | ||||||
|  | #endregion | ||||||
|  |  | ||||||
|  | #region Authors | ||||||
|  | /* | ||||||
|  |  * Authors: | ||||||
|  |  * - Gonzalo Paniagua Javier <gonzalo@novell.com> | ||||||
|  |  */ | ||||||
|  | #endregion | ||||||
|  |  | ||||||
| using System; | using System; | ||||||
| using System.Collections; | using System.Collections; | ||||||
| @@ -34,255 +43,262 @@ using System.Collections.Generic; | |||||||
|  |  | ||||||
| namespace WebSocketSharp.Net | namespace WebSocketSharp.Net | ||||||
| { | { | ||||||
| 	/// <summary> |   /// <summary> | ||||||
| 	/// Provides the collection used to store the URI prefixes for the <see cref="HttpListener"/>. |   /// Provides the collection used to store the URI prefixes for the <see cref="HttpListener"/>. | ||||||
| 	/// </summary> |   /// </summary> | ||||||
| 	public class HttpListenerPrefixCollection : ICollection<string>, IEnumerable<string>, IEnumerable |   /// <remarks> | ||||||
| 	{ |   /// The <see cref="HttpListener"/> responds to the request which has a requested URI that | ||||||
| 		#region Private Fields |   /// the prefixes most closely match. | ||||||
|  |   /// </remarks> | ||||||
|  |   public class HttpListenerPrefixCollection | ||||||
|  |     : ICollection<string>, IEnumerable<string>, IEnumerable | ||||||
|  |   { | ||||||
|  |     #region Private Fields | ||||||
|  |  | ||||||
| 		private HttpListener _listener; |     private HttpListener _listener; | ||||||
| 		private List<string> _prefixes; |     private List<string> _prefixes; | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |  | ||||||
| 		#region Private Constructors |     #region Private Constructors | ||||||
|  |  | ||||||
| 		private HttpListenerPrefixCollection () |     private HttpListenerPrefixCollection () | ||||||
| 		{ |     { | ||||||
| 			_prefixes = new List<string> (); |       _prefixes = new List<string> (); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |  | ||||||
| 		#region Internal Constructors |     #region Internal Constructors | ||||||
|  |  | ||||||
| 		internal HttpListenerPrefixCollection (HttpListener listener) |     internal HttpListenerPrefixCollection (HttpListener listener) | ||||||
| 			: this () |       : this () | ||||||
| 		{ |     { | ||||||
| 			_listener = listener; |       _listener = listener; | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |  | ||||||
| 		#region Public Properties |     #region Public Properties | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Gets the number of prefixes contained in the <see cref="HttpListenerPrefixCollection"/>. |     /// Gets the number of prefixes contained in the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <value> |     /// <value> | ||||||
| 		/// A <see cref="int"/> that contains the number of prefixes. |     /// An <see cref="int"/> that represents the number of prefixes. | ||||||
| 		/// </value> |     /// </value> | ||||||
| 		public int Count { |     public int Count { | ||||||
| 			get { |       get { | ||||||
| 				return _prefixes.Count; |         return _prefixes.Count; | ||||||
| 			} |       } | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Gets a value indicating whether access to the <see cref="HttpListenerPrefixCollection"/> |     /// Gets a value indicating whether the access to the <see cref="HttpListenerPrefixCollection"/> | ||||||
| 		/// is read-only. |     /// is read-only. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <value> |     /// <value> | ||||||
| 		/// Always returns <c>false</c>. |     /// Always returns <c>false</c>. | ||||||
| 		/// </value> |     /// </value> | ||||||
| 		public bool IsReadOnly { |     public bool IsReadOnly { | ||||||
| 			get { |       get { | ||||||
| 				return false; |         return false; | ||||||
| 			} |       } | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Gets a value indicating whether access to the <see cref="HttpListenerPrefixCollection"/> |     /// Gets a value indicating whether the access to the <see cref="HttpListenerPrefixCollection"/> | ||||||
| 		/// is synchronized. |     /// is synchronized. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <value> |     /// <value> | ||||||
| 		/// Always returns <c>false</c>. |     /// Always returns <c>false</c>. | ||||||
| 		/// </value> |     /// </value> | ||||||
| 		public bool IsSynchronized { |     public bool IsSynchronized { | ||||||
| 			get { |       get { | ||||||
| 				return false; |         return false; | ||||||
| 			} |       } | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |  | ||||||
| 		#region Public Methods |     #region Public Methods | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Adds the specified <paramref name="uriPrefix"/> to the <see cref="HttpListenerPrefixCollection"/>. |     /// Adds the specified <paramref name="uriPrefix"/> to | ||||||
| 		/// </summary> |     /// the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// <param name="uriPrefix"> |     /// </summary> | ||||||
| 		/// A <see cref="string"/> that contains a URI prefix to add. |     /// <param name="uriPrefix"> | ||||||
| 		/// </param> |     /// A <see cref="string"/> that represents the URI prefix to add. The prefix must be | ||||||
| 		/// <exception cref="ArgumentNullException"> |     /// a well-formed URI prefix with http or https scheme, and must be terminated with | ||||||
| 		/// <paramref name="uriPrefix"/> is <see langword="null"/>. |     /// a <c>"/"</c>. | ||||||
| 		/// </exception> |     /// </param> | ||||||
| 		/// <exception cref="ArgumentException"> |     /// <exception cref="ArgumentNullException"> | ||||||
| 		/// <paramref name="uriPrefix"/> is invalid. |     /// <paramref name="uriPrefix"/> is <see langword="null"/>. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ArgumentException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// <paramref name="uriPrefix"/> is invalid. | ||||||
| 		/// is closed. |     /// </exception> | ||||||
| 		/// </exception> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		public void Add (string uriPrefix) |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		{ |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 			_listener.CheckDisposed (); |     /// </exception> | ||||||
| 			ListenerPrefix.CheckUriPrefix (uriPrefix); |     public void Add (string uriPrefix) | ||||||
| 			if (_prefixes.Contains (uriPrefix)) |     { | ||||||
| 				return; |       _listener.CheckDisposed (); | ||||||
|  |       ListenerPrefix.CheckUriPrefix (uriPrefix); | ||||||
|  |       if (_prefixes.Contains (uriPrefix)) | ||||||
|  |         return; | ||||||
|  |  | ||||||
| 			_prefixes.Add (uriPrefix); |       _prefixes.Add (uriPrefix); | ||||||
| 			if (_listener.IsListening) |       if (_listener.IsListening) | ||||||
| 				EndPointManager.AddPrefix (uriPrefix, _listener); |         EndPointManager.AddPrefix (uriPrefix, _listener); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Removes all URI prefixes from the <see cref="HttpListenerPrefixCollection"/>. |     /// Removes all URI prefixes from the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		/// is closed. |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		public void Clear () |     public void Clear () | ||||||
| 		{ |     { | ||||||
| 			_listener.CheckDisposed (); |       _listener.CheckDisposed (); | ||||||
| 			_prefixes.Clear (); |       _prefixes.Clear (); | ||||||
| 			if (_listener.IsListening) |       if (_listener.IsListening) | ||||||
| 				EndPointManager.RemoveListener (_listener); |         EndPointManager.RemoveListener (_listener); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Returns a value indicating whether the <see cref="HttpListenerPrefixCollection"/> contains |     /// Returns a value indicating whether the <see cref="HttpListenerPrefixCollection"/> contains | ||||||
| 		/// the specified <paramref name="uriPrefix"/>. |     /// the specified <paramref name="uriPrefix"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <returns> |     /// <returns> | ||||||
| 		/// <c>true</c> if the <see cref="HttpListenerPrefixCollection"/> contains <paramref name="uriPrefix"/>; |     /// <c>true</c> if the <see cref="HttpListenerPrefixCollection"/> contains | ||||||
| 		/// otherwise, <c>false</c>. |     /// <paramref name="uriPrefix"/>; otherwise, <c>false</c>. | ||||||
| 		/// </returns> |     /// </returns> | ||||||
| 		/// <param name="uriPrefix"> |     /// <param name="uriPrefix"> | ||||||
| 		/// A <see cref="string"/> that contains a URI prefix to test. |     /// A <see cref="string"/> that represents the URI prefix to test. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <exception cref="ArgumentNullException"> |     /// <exception cref="ArgumentNullException"> | ||||||
| 		/// <paramref name="uriPrefix"/> is <see langword="null"/>. |     /// <paramref name="uriPrefix"/> is <see langword="null"/>. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		/// is closed. |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		public bool Contains (string uriPrefix) |     public bool Contains (string uriPrefix) | ||||||
| 		{ |     { | ||||||
| 			_listener.CheckDisposed (); |       _listener.CheckDisposed (); | ||||||
| 			if (uriPrefix == null) |       if (uriPrefix == null) | ||||||
| 				throw new ArgumentNullException ("uriPrefix"); |         throw new ArgumentNullException ("uriPrefix"); | ||||||
|  |  | ||||||
| 			return _prefixes.Contains (uriPrefix); |       return _prefixes.Contains (uriPrefix); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Copies the contents of the <see cref="HttpListenerPrefixCollection"/> to |     /// Copies the contents of the <see cref="HttpListenerPrefixCollection"/> to | ||||||
| 		/// the specified <see cref="Array"/>. |     /// the specified <see cref="Array"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <param name="array"> |     /// <param name="array"> | ||||||
| 		/// An <see cref="Array"/> that receives the URI prefix strings |     /// An <see cref="Array"/> that receives the URI prefix strings in | ||||||
| 		/// in the <see cref="HttpListenerPrefixCollection"/>. |     /// the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <param name="offset"> |     /// <param name="offset"> | ||||||
| 		/// An <see cref="int"/> that contains the zero-based index in <paramref name="array"/> |     /// An <see cref="int"/> that represents the zero-based index in <paramref name="array"/> | ||||||
| 		/// at which copying begins. |     /// at which copying begins. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		/// is closed. |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		public void CopyTo (Array array, int offset) |     public void CopyTo (Array array, int offset) | ||||||
| 		{ |     { | ||||||
| 			_listener.CheckDisposed (); |       _listener.CheckDisposed (); | ||||||
| 			((ICollection) _prefixes).CopyTo (array, offset); |       ((ICollection) _prefixes).CopyTo (array, offset); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Copies the contents of the <see cref="HttpListenerPrefixCollection"/> to |     /// Copies the contents of the <see cref="HttpListenerPrefixCollection"/> to | ||||||
| 		/// the specified array of <see cref="string"/>. |     /// the specified array of <see cref="string"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <param name="array"> |     /// <param name="array"> | ||||||
| 		/// An array of <see cref="string"/> that receives the URI prefix strings |     /// An array of <see cref="string"/> that receives the URI prefix strings in | ||||||
| 		/// in the <see cref="HttpListenerPrefixCollection"/>. |     /// the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <param name="offset"> |     /// <param name="offset"> | ||||||
| 		/// An <see cref="int"/> that contains the zero-based index in <paramref name="array"/> |     /// An <see cref="int"/> that represents the zero-based index in <paramref name="array"/> | ||||||
| 		/// at which copying begins. |     /// at which copying begins. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		/// is closed. |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		public void CopyTo (string [] array, int offset) |     public void CopyTo (string [] array, int offset) | ||||||
| 		{ |     { | ||||||
| 			_listener.CheckDisposed (); |       _listener.CheckDisposed (); | ||||||
| 			_prefixes.CopyTo (array, offset); |       _prefixes.CopyTo (array, offset); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Gets an object that can be used to iterate through the <see cref="HttpListenerPrefixCollection"/>. |     /// Gets the enumerator used to iterate through the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <returns> |     /// <returns> | ||||||
| 		/// An object that implements the IEnumerator<string> interface and provides access to |     /// An <see cref="T:System.Collections.Generic.IEnumerator{string}"/> instance used to iterate | ||||||
| 		/// the URI prefix strings in the <see cref="HttpListenerPrefixCollection"/>. |     /// through the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </returns> |     /// </returns> | ||||||
| 		public IEnumerator<string> GetEnumerator () |     public IEnumerator<string> GetEnumerator () | ||||||
| 		{ |     { | ||||||
| 			return _prefixes.GetEnumerator (); |       return _prefixes.GetEnumerator (); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Removes the specified <paramref name="uriPrefix"/> from the list of prefixes |     /// Removes the specified <paramref name="uriPrefix"/> from the list of prefixes in | ||||||
| 		/// in the <see cref="HttpListenerPrefixCollection"/>. |     /// the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <returns> |     /// <returns> | ||||||
| 		/// <c>true</c> if <paramref name="uriPrefix"/> is successfully found and removed; |     /// <c>true</c> if <paramref name="uriPrefix"/> is successfully found and removed; | ||||||
| 		/// otherwise, <c>false</c>. |     /// otherwise, <c>false</c>. | ||||||
| 		/// </returns> |     /// </returns> | ||||||
| 		/// <param name="uriPrefix"> |     /// <param name="uriPrefix"> | ||||||
| 		/// A <see cref="string"/> that contains a URI prefix to remove. |     /// A <see cref="string"/> that represents the URI prefix to remove. | ||||||
| 		/// </param> |     /// </param> | ||||||
| 		/// <exception cref="ArgumentNullException"> |     /// <exception cref="ArgumentNullException"> | ||||||
| 		/// <paramref name="uriPrefix"/> is <see langword="null"/>. |     /// <paramref name="uriPrefix"/> is <see langword="null"/>. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		/// <exception cref="ObjectDisposedException"> |     /// <exception cref="ObjectDisposedException"> | ||||||
| 		/// The <see cref="HttpListener"/> associated with this <see cref="HttpListenerPrefixCollection"/> |     /// The <see cref="HttpListener"/> associated with | ||||||
| 		/// is closed. |     /// this <see cref="HttpListenerPrefixCollection"/> is closed. | ||||||
| 		/// </exception> |     /// </exception> | ||||||
| 		public bool Remove (string uriPrefix) |     public bool Remove (string uriPrefix) | ||||||
| 		{ |     { | ||||||
| 			_listener.CheckDisposed (); |       _listener.CheckDisposed (); | ||||||
| 			if (uriPrefix == null) |       if (uriPrefix == null) | ||||||
| 				throw new ArgumentNullException ("uriPrefix"); |         throw new ArgumentNullException ("uriPrefix"); | ||||||
|  |  | ||||||
| 			var result = _prefixes.Remove (uriPrefix); |       var result = _prefixes.Remove (uriPrefix); | ||||||
| 			if (result && _listener.IsListening) |       if (result && _listener.IsListening) | ||||||
| 				EndPointManager.RemovePrefix (uriPrefix, _listener); |         EndPointManager.RemovePrefix (uriPrefix, _listener); | ||||||
|  |  | ||||||
| 			return result; |       return result; | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |  | ||||||
| 		#region Explicit Interface Implementation |     #region Explicit Interface Implementation | ||||||
|  |  | ||||||
| 		/// <summary> |     /// <summary> | ||||||
| 		/// Gets an object that can be used to iterate through the <see cref="HttpListenerPrefixCollection"/>. |     /// Gets the enumerator used to iterate through the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </summary> |     /// </summary> | ||||||
| 		/// <returns> |     /// <returns> | ||||||
| 		/// An object that implements the <see cref="IEnumerator"/> interface and provides access to |     /// An <see cref="IEnumerator"/> instance used to iterate through | ||||||
| 		/// the URI prefix strings in the <see cref="HttpListenerPrefixCollection"/>. |     /// the <see cref="HttpListenerPrefixCollection"/>. | ||||||
| 		/// </returns> |     /// </returns> | ||||||
| 		IEnumerator IEnumerable.GetEnumerator () |     IEnumerator IEnumerable.GetEnumerator () | ||||||
| 		{ |     { | ||||||
| 			return _prefixes.GetEnumerator (); |       return _prefixes.GetEnumerator (); | ||||||
| 		} |     } | ||||||
|  |  | ||||||
| 		#endregion |     #endregion | ||||||
|  |   } | ||||||
| 	} |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user