You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by ni...@apache.org on 2004/12/20 01:44:46 UTC

cvs commit: logging-log4net/src/Util/TypeConverters BooleanConverter.cs ConversionNotSupportedException.cs ConverterRegistry.cs EncodingConverter.cs IConvertFrom.cs IConvertTo.cs PatternLayoutConverter.cs PatternStringConverter.cs TypeConverter.cs TypeConverterAttribute.cs

nicko       2004/12/19 16:44:46

  Modified:    src/Util/TypeConverters BooleanConverter.cs
                        ConversionNotSupportedException.cs
                        ConverterRegistry.cs EncodingConverter.cs
                        IConvertFrom.cs IConvertTo.cs
                        PatternLayoutConverter.cs PatternStringConverter.cs
                        TypeConverter.cs TypeConverterAttribute.cs
  Log:
  Updated doc comments.
  
  Revision  Changes    Path
  1.5       +24 -2     logging-log4net/src/Util/TypeConverters/BooleanConverter.cs
  
  Index: BooleanConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/BooleanConverter.cs,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BooleanConverter.cs	19 Dec 2004 19:24:35 -0000	1.4
  +++ BooleanConverter.cs	20 Dec 2004 00:44:45 -0000	1.5
  @@ -24,8 +24,13 @@
   	/// Type converter for Boolean.
   	/// </summary>
   	/// <remarks>
  -	/// Supports conversion from string to boolean type.
  +	/// <para>
  +	/// Supports conversion from string to <c>bool</c> type.
  +	/// </para>
   	/// </remarks>
  +	/// <seealso cref="ConverterRegistry"/>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
   	public class BooleanConverter : IConvertFrom
  @@ -37,9 +42,15 @@
   		/// </summary>
   		/// <param name="sourceType">the type to convert</param>
   		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="sourceType"/> is
  +		/// the <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertFrom(Type sourceType)
   		{
  -			return sourceType == typeof(string);
  +			return (sourceType == typeof(string));
   		}
   
   		/// <summary>
  @@ -47,6 +58,17 @@
   		/// </summary>
   		/// <param name="source">the object to convert</param>
   		/// <returns>the converted object</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Uses the <see cref="Boolean.Parse"/> method to convert the
  +		/// <see cref="String"/> argument to a <see cref="Boolean"/>.
  +		/// </para>
  +		/// </remarks>
  + 		/// <exception cref="ConversionNotSupportedException">
  + 		/// The <paramref name="source"/> object cannot be converted to the
  + 		/// target type. To check for this condition use the <see cref="CanConvertFrom"/>
  + 		/// method.
  + 		/// </exception>
   		public object ConvertFrom(object source)
   		{
   			string str = source as string;
  
  
  
  1.3       +32 -8     logging-log4net/src/Util/TypeConverters/ConversionNotSupportedException.cs
  
  Index: ConversionNotSupportedException.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/ConversionNotSupportedException.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ConversionNotSupportedException.cs	16 Feb 2004 02:10:55 -0000	1.2
  +++ ConversionNotSupportedException.cs	20 Dec 2004 00:44:45 -0000	1.3
  @@ -41,28 +41,42 @@
   		#region Public Instance Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class.
  +		/// Constructor
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class.
  +		/// </para>
  +		/// </remarks>
   		public ConversionNotSupportedException()
   		{
   		}
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class
  -		/// with the specified message.
  +		/// Constructor
   		/// </summary>
   		/// <param name="message">A message to include with the exception.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class
  +		/// with the specified message.
  +		/// </para>
  +		/// </remarks>
   		public ConversionNotSupportedException(String message) : base(message) 
   		{
   		}
  -
   		
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class
  -		/// with the specified message and inner exception.
  +		/// Constructor
   		/// </summary>
   		/// <param name="message">A message to include with the exception.</param>
   		/// <param name="innerException">A nested exception to include.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class
  +		/// with the specified message and inner exception.
  +		/// </para>
  +		/// </remarks>
   		public ConversionNotSupportedException(String message, Exception innerException) : base(message, innerException) 
   		{
   		}
  @@ -73,11 +87,16 @@
   
   #if !NETCF
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class 
  -		/// with serialized data.
  +		/// Serialization constructor
   		/// </summary>
   		/// <param name="info">The <see cref="SerializationInfo" /> that holds the serialized object data about the exception being thrown.</param>
   		/// <param name="context">The <see cref="StreamingContext" /> that contains contextual information about the source or destination.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Initializes a new instance of the <see cref="ConversionNotSupportedException" /> class 
  +		/// with serialized data.
  +		/// </para>
  +		/// </remarks>
   		protected ConversionNotSupportedException(SerializationInfo info, StreamingContext context) : base(info, context) 
   		{
   		}
  @@ -93,6 +112,11 @@
   		/// <param name="destinationType">The conversion destination type.</param>
   		/// <param name="sourceValue">The value to convert.</param>
   		/// <returns>An instance of the <see cref="ConversionNotSupportedException" />.</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Creates a new instance of the <see cref="ConversionNotSupportedException" /> class.
  +		/// </para>
  +		/// </remarks>
   		public static ConversionNotSupportedException Create(Type destinationType, object sourceValue)
   		{
   			if (sourceValue == null)
  
  
  
  1.8       +97 -48    logging-log4net/src/Util/TypeConverters/ConverterRegistry.cs
  
  Index: ConverterRegistry.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/ConverterRegistry.cs,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ConverterRegistry.cs	19 Dec 2004 19:24:41 -0000	1.7
  +++ ConverterRegistry.cs	20 Dec 2004 00:44:45 -0000	1.8
  @@ -26,22 +26,36 @@
   	/// <summary>
   	/// Register of type converters for specific types.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Maintains a registry of type converters used to convert between
  +	/// types.
  +	/// </para>
  +	/// <para>
  +	/// Use the <see cref="AddConverter"/> methods to register new converters.
  +	/// The <see cref="GetConvertTo"/> and <see cref="GetConvertFrom"/> methods
  +	/// lookup appropriate converters to use.
  +	/// </para>
  +	/// </remarks>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
   	public sealed class ConverterRegistry
   	{
  -		#region Internal Instance Constructors
  +		#region Private Constructors
   
   		/// <summary>
  -		/// Initializes a new instance of the <see cref="ConverterRegistry" /> class.
  +		/// Private constructor
   		/// </summary>
  +		/// <remarks>
  +		/// Initializes a new instance of the <see cref="ConverterRegistry" /> class.
  +		/// </remarks>
   		private ConverterRegistry() 
   		{
  -			// Initialize the type2converter hashtable
  -			m_type2converter = new Hashtable();
   		}
   
  -		#endregion Internal Instance Constructors
  +		#endregion Private Constructors
   
   		#region Static Constructor
   
  @@ -49,13 +63,12 @@
   		/// Static constructor.
   		/// </summary>
   		/// <remarks>
  -		/// This constructor defines the intrinsic type converters
  +		/// <para>
  +		/// This constructor defines the intrinsic type converters.
  +		/// </para>
   		/// </remarks>
   		static ConverterRegistry()
   		{
  -			// Create the registry
  -			s_registry = new ConverterRegistry();
  -
   			// Add predefined converters here
   			AddConverter(typeof(bool), typeof(BooleanConverter));
   			AddConverter(typeof(System.Text.Encoding), typeof(EncodingConverter));
  @@ -73,11 +86,19 @@
   		/// </summary>
   		/// <param name="destinationType">The type being converted to.</param>
   		/// <param name="converter">The type converter to use to convert to the destination type.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Adds a converter instance for a specific type.
  +		/// </para>
  +		/// </remarks>
   		public static void AddConverter(Type destinationType, object converter)
   		{
   			if (destinationType != null && converter != null)
   			{
  -				s_registry.m_type2converter[destinationType] = converter;
  +				lock(s_type2converter)
  +				{
  +					s_type2converter[destinationType] = converter;
  +				}
   			}
   		}
   
  @@ -86,6 +107,11 @@
   		/// </summary>
   		/// <param name="destinationType">The type being converted to.</param>
   		/// <param name="converterType">The type of the type converter to use to convert to the destination type.</param>
  +		/// <remarks>
  +		/// <para>
  +		/// Adds a converter <see cref="Type"/> for a specific type.
  +		/// </para>
  +		/// </remarks>
   		public static void AddConverter(Type destinationType, Type converterType)
   		{
   			AddConverter(destinationType, CreateConverterInstance(converterType));
  @@ -100,6 +126,11 @@
   		/// The type converter instance to use for type conversions or <c>null</c> 
   		/// if no type converter is found.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the type converter to use to convert values to the destination type.
  +		/// </para>
  +		/// </remarks>
   		public static IConvertTo GetConvertTo(Type sourceType, Type destinationType)
   		{
   			// TODO: Support inheriting type converters.
  @@ -107,22 +138,25 @@
   
   			// TODO: Is destinationType required? We don't use it for anything.
   
  -			// Lookup in the static registry
  -			IConvertTo converter = s_registry.m_type2converter[sourceType] as IConvertTo;
  -
  -			if (converter == null)
  +			lock(s_type2converter)
   			{
  -				// Lookup using attributes
  -				converter = GetConverterFromAttribute(sourceType) as IConvertTo;
  +				// Lookup in the static registry
  +				IConvertTo converter = s_type2converter[sourceType] as IConvertTo;
   
  -				if (converter != null)
  +				if (converter == null)
   				{
  -					// Store in registry
  -					s_registry.m_type2converter[sourceType] = converter;
  +					// Lookup using attributes
  +					converter = GetConverterFromAttribute(sourceType) as IConvertTo;
  +
  +					if (converter != null)
  +					{
  +						// Store in registry
  +						s_type2converter[sourceType] = converter;
  +					}
   				}
  -			}
   
  -			return converter;
  +				return converter;
  +			}
   		}
   
   		/// <summary>
  @@ -133,27 +167,35 @@
   		/// The type converter instance to use for type conversions or <c>null</c> 
   		/// if no type converter is found.
   		/// </returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Gets the type converter to use to convert values to the destination type.
  +		/// </para>
  +		/// </remarks>
   		public static IConvertFrom GetConvertFrom(Type destinationType)
   		{
   			// TODO: Support inheriting type converters.
   			// i.e. getting a type converter for a base of destinationType
   
  -			// Lookup in the static registry
  -			IConvertFrom converter = s_registry.m_type2converter[destinationType] as IConvertFrom;
  -
  -			if (converter == null)
  +			lock(s_type2converter)
   			{
  -				// Lookup using attributes
  -				converter = GetConverterFromAttribute(destinationType) as IConvertFrom;
  +				// Lookup in the static registry
  +				IConvertFrom converter = s_type2converter[destinationType] as IConvertFrom;
   
  -				if (converter != null)
  +				if (converter == null)
   				{
  -					// Store in registry
  -					s_registry.m_type2converter[destinationType] = converter;
  +					// Lookup using attributes
  +					converter = GetConverterFromAttribute(destinationType) as IConvertFrom;
  +
  +					if (converter != null)
  +					{
  +						// Store in registry
  +						s_type2converter[destinationType] = converter;
  +					}
   				}
  -			}
   
  -			return converter;
  +				return converter;
  +			}
   		}
   		
   		/// <summary>
  @@ -187,24 +229,40 @@
   		/// Creates the instance of the type converter.
   		/// </summary>
   		/// <param name="converterType">The type of the type converter.</param>
  +		/// <returns>
  +		/// The type converter instance to use for type conversions or <c>null</c> 
  +		/// if no type converter is found.
  +		/// </returns>
   		/// <remarks>
  +		/// <para>
   		/// The type specified for the type converter must implement 
   		/// the <see cref="IConvertFrom"/> or <see cref="IConvertTo"/> interfaces 
   		/// and must have a public default (no argument) constructor.
  +		/// </para>
   		/// </remarks>
  -		/// <returns>
  -		/// The type converter instance to use for type conversions or <c>null</c> 
  -		/// if no type converter is found.</returns>
   		private static object CreateConverterInstance(Type converterType)
   		{
  -			if (converterType != null)
  +			if (converterType == null)
   			{
  -				// Check type is a converter
  -				if (typeof(IConvertFrom).IsAssignableFrom(converterType) || typeof(IConvertTo).IsAssignableFrom(converterType))
  +				throw new ArgumentNullException("converterType", "CreateConverterInstance cannot create instance, converterType is null");
  +			}
  +
  +			// Check type is a converter
  +			if (typeof(IConvertFrom).IsAssignableFrom(converterType) || typeof(IConvertTo).IsAssignableFrom(converterType))
  +			{
  +				try
   				{
   					// Create the type converter
   					return Activator.CreateInstance(converterType);
   				}
  +				catch(Exception ex)
  +				{
  +					LogLog.Error("ConverterRegistry: Cannot CreateConverterInstance of type ["+converterType.FullName+"], Exception in call to Activator.CreateInstance", ex);
  +				}
  +			}
  +			else
  +			{
  +				LogLog.Error("ConverterRegistry: Cannot CreateConverterInstance of type ["+converterType.FullName+"], type does not implement IConvertFrom or IConvertTo");
   			}
   			return null;
   		}
  @@ -214,18 +272,9 @@
   		#region Private Static Fields
   
   		/// <summary>
  -		/// The singleton registry.
  -		/// </summary>
  -		private static ConverterRegistry s_registry;
  -
  -		#endregion
  -
  -		#region Private Instance Fields
  -
  -		/// <summary>
   		/// Mapping from <see cref="Type" /> to type converter.
   		/// </summary>
  -		private Hashtable m_type2converter;
  +		private static Hashtable s_type2converter = new Hashtable();
   
   		#endregion
   	}
  
  
  
  1.4       +29 -8     logging-log4net/src/Util/TypeConverters/EncodingConverter.cs
  
  Index: EncodingConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/EncodingConverter.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EncodingConverter.cs	19 Dec 2004 19:24:47 -0000	1.3
  +++ EncodingConverter.cs	20 Dec 2004 00:44:45 -0000	1.4
  @@ -22,9 +22,16 @@
   namespace log4net.Util.TypeConverters
   {
   	/// <summary>
  -	/// Implementation of <see cref="IConvertFrom"/> that converts an <see cref="Encoding"/>
  -	/// instance from a string.
  +	/// Supports conversion from string to <see cref="Encoding"/> type.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Supports conversion from string to <see cref="Encoding"/> type.
  +	/// </para>
  +	/// </remarks>
  +	/// <seealso cref="ConverterRegistry"/>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
   	public class EncodingConverter : IConvertFrom 
  @@ -32,13 +39,16 @@
   		#region Implementation of IConvertFrom
   
   		/// <summary>
  -		/// Overrides the CanConvertFrom method of IConvertFrom.
  -		/// The ITypeDescriptorContext interface provides the context for the
  -		/// conversion. Typically this interface is used at design time to 
  -		/// provide information about the design-time container.
  +		/// Can the source type be converted to the type supported by this object
   		/// </summary>
  -		/// <param name="sourceType"></param>
  -		/// <returns>true if the source is a string</returns>
  +		/// <param name="sourceType">the type to convert</param>
  +		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="sourceType"/> is
  +		/// the <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertFrom(Type sourceType) 
   		{
   			return (sourceType == typeof(string));
  @@ -49,6 +59,17 @@
   		/// </summary>
   		/// <param name="source">the object to convert to an encoding</param>
   		/// <returns>the encoding</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Uses the <see cref="Encoding.GetEncoding"/> method to convert the
  +		/// <see cref="String"/> argument to an <see cref="Encoding"/>.
  +		/// </para>
  +		/// </remarks>
  +		/// <exception cref="ConversionNotSupportedException">
  +		/// The <paramref name="source"/> object cannot be converted to the
  +		/// target type. To check for this condition use the <see cref="CanConvertFrom"/>
  +		/// method.
  +		/// </exception>
   		public object ConvertFrom(object source) 
   		{
   			string str = source as string;
  
  
  
  1.4       +14 -0     logging-log4net/src/Util/TypeConverters/IConvertFrom.cs
  
  Index: IConvertFrom.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/IConvertFrom.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IConvertFrom.cs	23 Feb 2004 03:18:05 -0000	1.3
  +++ IConvertFrom.cs	20 Dec 2004 00:44:45 -0000	1.4
  @@ -24,8 +24,10 @@
   	/// Interface supported by type converters
   	/// </summary>
   	/// <remarks>
  +	/// <para>
   	/// This interface supports conversion from arbitrary types
   	/// to a single target type. See <see cref="TypeConverterAttribute"/>.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
  @@ -36,6 +38,12 @@
   		/// </summary>
   		/// <param name="sourceType">the type to convert</param>
   		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Test if the <paramref name="sourceType"/> can be converted to the
  +		/// type supported by this converter.
  +		/// </para>
  +		/// </remarks>
   		bool CanConvertFrom(Type sourceType);
   
   		/// <summary>
  @@ -43,6 +51,12 @@
   		/// </summary>
   		/// <param name="source">the object to convert</param>
   		/// <returns>the converted object</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Converts the <paramref name="source"/> to the type supported
  +		/// by this converter.
  +		/// </para>
  +		/// </remarks>
   		object ConvertFrom(object source);
   	}
   }
  
  
  
  1.4       +14 -0     logging-log4net/src/Util/TypeConverters/IConvertTo.cs
  
  Index: IConvertTo.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/IConvertTo.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IConvertTo.cs	23 Feb 2004 03:18:05 -0000	1.3
  +++ IConvertTo.cs	20 Dec 2004 00:44:45 -0000	1.4
  @@ -24,8 +24,10 @@
   	/// Interface supported by type converters
   	/// </summary>
   	/// <remarks>
  +	/// <para>
   	/// This interface supports conversion from a single type to arbitrary types.
   	/// See <see cref="TypeConverterAttribute"/>.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	public interface IConvertTo
  @@ -35,6 +37,12 @@
   		/// </summary>
   		/// <param name="targetType">A Type that represents the type you want to convert to</param>
   		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Test if the type supported by this converter can be converted to the
  +		/// <paramref name="targetType"/>.
  +		/// </para>
  +		/// </remarks>
   		bool CanConvertTo(Type targetType);
   
   		/// <summary>
  @@ -43,6 +51,12 @@
   		/// <param name="source">the object to convert</param>
   		/// <param name="targetType">The Type to convert the value parameter to</param>
   		/// <returns>the converted object</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Converts the <paramref name="source"/> (which must be of the type supported
  +		/// by this converter) to the <paramref name="targetType"/> specified..
  +		/// </para>
  +		/// </remarks>
   		object ConvertTo(object source, Type targetType);
   	}
   }
  
  
  
  1.3       +34 -8     logging-log4net/src/Util/TypeConverters/PatternLayoutConverter.cs
  
  Index: PatternLayoutConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/PatternLayoutConverter.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PatternLayoutConverter.cs	19 Dec 2004 19:24:52 -0000	1.2
  +++ PatternLayoutConverter.cs	20 Dec 2004 00:44:45 -0000	1.3
  @@ -24,22 +24,36 @@
   namespace log4net.Util.TypeConverters
   {
   	/// <summary>
  -	/// Implementation of <see cref="IConvertFrom"/> that converts 
  -	/// a string into a <see cref="PatternLayout"/>.
  +	/// Supports conversion from string to <see cref="PatternLayout"/> type.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Supports conversion from string to <see cref="PatternLayout"/> type.
  +	/// </para>
  +	/// <para>
  +	/// The string is used as the <see cref="PatternLayout.ConversionPattern"/> 
  +	/// of the <see cref="PatternLayout"/>.
  +	/// </para>
  +	/// </remarks>
  +	/// <seealso cref="ConverterRegistry"/>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	public class PatternLayoutConverter : IConvertFrom
   	{
   		#region Implementation of IConvertFrom
   
   		/// <summary>
  -		/// Overrides the CanConvertFrom method of IConvertFrom.
  -		/// The ITypeDescriptorContext interface provides the context for the
  -		/// conversion. Typically this interface is used at design time to 
  -		/// provide information about the design-time container.
  +		/// Can the source type be converted to the type supported by this object
   		/// </summary>
  -		/// <param name="sourceType"></param>
  -		/// <returns>true if the source is a string</returns>
  +		/// <param name="sourceType">the type to convert</param>
  +		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="sourceType"/> is
  +		/// the <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertFrom(System.Type sourceType)
   		{
   			return (sourceType == typeof(string));
  @@ -50,6 +64,18 @@
   		/// </summary>
   		/// <param name="source">the object to convert to a PatternLayout</param>
   		/// <returns>the PatternLayout</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Creates and returns a new <see cref="PatternLayout"/> using
  +		/// the <paramref name="source"/> <see cref="String"/> as the
  +		/// <see cref="PatternLayout.ConversionPattern"/>.
  +		/// </para>
  +		/// </remarks>
  +		/// <exception cref="ConversionNotSupportedException">
  +		/// The <paramref name="source"/> object cannot be converted to the
  +		/// target type. To check for this condition use the <see cref="CanConvertFrom"/>
  +		/// method.
  +		/// </exception>
   		public object ConvertFrom(object source) 
   		{
   			string str = source as string;
  
  
  
  1.5       +54 -11    logging-log4net/src/Util/TypeConverters/PatternStringConverter.cs
  
  Index: PatternStringConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/PatternStringConverter.cs,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PatternStringConverter.cs	19 Dec 2004 19:24:58 -0000	1.4
  +++ PatternStringConverter.cs	20 Dec 2004 00:44:45 -0000	1.5
  @@ -24,20 +24,37 @@
   namespace log4net.Util.TypeConverters
   {
   	/// <summary>
  -	/// Implementation of <see cref="IConvertFrom"/> that converts 
  -	/// a <see cref="PatternString"/> to a string and a string into
  -	/// a <see cref="PatternString"/>.
  +	/// Convert between string and <see cref="PatternString"/>
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Supports conversion from string to <see cref="PatternString"/> type, 
  +	/// and from a <see cref="PatternString"/> type to a string.
  +	/// </para>
  +	/// <para>
  +	/// The string is used as the <see cref="PatternString.ConversionPattern"/> 
  +	/// of the <see cref="PatternString"/>.
  +	/// </para>
  +	/// </remarks>
  +	/// <seealso cref="ConverterRegistry"/>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	public class PatternStringConverter : IConvertTo, IConvertFrom
   	{
   		#region Implementation of IConvertTo
   
   		/// <summary>
  -		/// Returns whether this converter can convert the object to the specified type
  +		/// Can the target type be converted to the type supported by this object
   		/// </summary>
  -		/// <param name="targetType">A Type that represents the type you want to convert to</param>
  +		/// <param name="targetType">A <see cref="Type"/> that represents the type you want to convert to</param>
   		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="targetType"/> is
  +		/// assignable from a <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertTo(Type targetType)
   		{
   			return (typeof(string).IsAssignableFrom(targetType));
  @@ -49,6 +66,17 @@
   		/// <param name="source">the object to convert</param>
   		/// <param name="targetType">The Type to convert the value parameter to</param>
   		/// <returns>the converted object</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Uses the <see cref="PatternString.Format"/> method to convert the
  +		/// <see cref="PatternString"/> argument to a <see cref="String"/>.
  +		/// </para>
  +		/// </remarks>
  +		/// <exception cref="ConversionNotSupportedException">
  +		/// The <paramref name="source"/> object cannot be converted to the
  +		/// <paramref name="targetType"/>. To check for this condition use the 
  +		/// <see cref="CanConvertTo"/> method.
  +		/// </exception>
   		public object ConvertTo(object source, Type targetType)
   		{
   			PatternString patternString = source as PatternString;
  @@ -64,13 +92,16 @@
   		#region Implementation of IConvertFrom
   
   		/// <summary>
  -		/// Overrides the CanConvertFrom method of IConvertFrom.
  -		/// The ITypeDescriptorContext interface provides the context for the
  -		/// conversion. Typically this interface is used at design time to 
  -		/// provide information about the design-time container.
  +		/// Can the source type be converted to the type supported by this object
   		/// </summary>
  -		/// <param name="sourceType"></param>
  -		/// <returns>true if the source is a string</returns>
  +		/// <param name="sourceType">the type to convert</param>
  +		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="sourceType"/> is
  +		/// the <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertFrom(System.Type sourceType)
   		{
   			return (sourceType == typeof(string));
  @@ -81,6 +112,18 @@
   		/// </summary>
   		/// <param name="source">the object to convert to a PatternString</param>
   		/// <returns>the PatternString</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Creates and returns a new <see cref="PatternString"/> using
  +		/// the <paramref name="source"/> <see cref="String"/> as the
  +		/// <see cref="PatternString.ConversionPattern"/>.
  +		/// </para>
  +		/// </remarks>
  +		/// <exception cref="ConversionNotSupportedException">
  +		/// The <paramref name="source"/> object cannot be converted to the
  +		/// target type. To check for this condition use the <see cref="CanConvertFrom"/>
  +		/// method.
  +		/// </exception>
   		public object ConvertFrom(object source) 
   		{
   			string str = source as string;
  
  
  
  1.3       +31 -7     logging-log4net/src/Util/TypeConverters/TypeConverter.cs
  
  Index: TypeConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/TypeConverter.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TypeConverter.cs	19 Dec 2004 19:25:04 -0000	1.2
  +++ TypeConverter.cs	20 Dec 2004 00:44:45 -0000	1.3
  @@ -22,21 +22,32 @@
   namespace log4net.Util.TypeConverters
   {
   	/// <summary>
  -	/// Implementation of <see cref="IConvertFrom"/> that converts to a <see cref="Type"/> instance from a string.
  +	/// Supports conversion from string to <see cref="Type"/> type.
   	/// </summary>
  +	/// <remarks>
  +	/// <para>
  +	/// Supports conversion from string to <see cref="Type"/> type.
  +	/// </para>
  +	/// </remarks>
  +	/// <seealso cref="ConverterRegistry"/>
  +	/// <seealso cref="IConvertFrom"/>
  +	/// <seealso cref="IConvertTo"/>
   	/// <author>Nicko Cadell</author>
   	public class TypeConverter : IConvertFrom 
   	{
   		#region Implementation of IConvertFrom
   
   		/// <summary>
  -		/// Overrides the CanConvertFrom method of IConvertFrom.
  -		/// The ITypeDescriptorContext interface provides the context for the
  -		/// conversion. Typically this interface is used at design time to 
  -		/// provide information about the design-time container.
  +		/// Can the source type be converted to the type supported by this object
   		/// </summary>
  -		/// <param name="sourceType"></param>
  -		/// <returns>true if the source is a string</returns>
  +		/// <param name="sourceType">the type to convert</param>
  +		/// <returns>true if the conversion is possible</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Returns <c>true</c> if the <paramref name="sourceType"/> is
  +		/// the <see cref="String"/> type.
  +		/// </para>
  +		/// </remarks>
   		public bool CanConvertFrom(Type sourceType) 
   		{
   			return (sourceType == typeof(string));
  @@ -47,6 +58,19 @@
   		/// </summary>
   		/// <param name="source">the object to convert to a Type</param>
   		/// <returns>the Type</returns>
  +		/// <remarks>
  +		/// <para>
  +		/// Uses the <see cref="Type.GetType"/> method to convert the
  +		/// <see cref="String"/> argument to a <see cref="Type"/>.
  +		/// Additional effort is made to locate partially specified types
  +		/// by searching the loaded assemblies.
  +		/// </para>
  +		/// </remarks>
  +		/// <exception cref="ConversionNotSupportedException">
  +		/// The <paramref name="source"/> object cannot be converted to the
  +		/// target type. To check for this condition use the <see cref="CanConvertFrom"/>
  +		/// method.
  +		/// </exception>
   		public object ConvertFrom(object source) 
   		{
   			string str = source as string;
  
  
  
  1.4       +18 -2     logging-log4net/src/Util/TypeConverters/TypeConverterAttribute.cs
  
  Index: TypeConverterAttribute.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/TypeConverters/TypeConverterAttribute.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TypeConverterAttribute.cs	23 Feb 2004 03:18:05 -0000	1.3
  +++ TypeConverterAttribute.cs	20 Dec 2004 00:44:45 -0000	1.4
  @@ -21,13 +21,18 @@
   namespace log4net.Util.TypeConverters
   {
   	/// <summary>
  -	/// Class and Interface level attribute that specifies a type converter
  -	/// to use with the associated type.
  +	/// Attribute used to associate a type converter
   	/// </summary>
   	/// <remarks>
  +	/// <para>
  +	/// Class and Interface level attribute that specifies a type converter
  +	/// to use with the associated type.
  +	/// </para>
  +	/// <para>
   	/// To associate a type converter with a target type apply a
   	/// <c>TypeConverterAttribute</c> to the target type. Specify the
   	/// type of the type converter on the attribute.
  +	/// </para>
   	/// </remarks>
   	/// <author>Nicko Cadell</author>
   	/// <author>Gert Driesen</author>
  @@ -48,6 +53,11 @@
   		/// <summary>
   		/// Default constructor
   		/// </summary>
  +		/// <remarks>
  +		/// <para>
  +		/// Default constructor
  +		/// </para>
  +		/// </remarks>
   		public TypeConverterAttribute()
   		{
   		}
  @@ -57,8 +67,10 @@
   		/// </summary>
   		/// <param name="typeName">The string type name of the type converter</param>
   		/// <remarks>
  +		/// <para>
   		/// The type specified must implement the <see cref="IConvertFrom"/> 
   		/// or the <see cref="IConvertTo"/> interfaces.
  +		/// </para>
   		/// </remarks>
   		public TypeConverterAttribute(string typeName)
   		{
  @@ -70,8 +82,10 @@
   		/// </summary>
   		/// <param name="converterType">The type of the type converter</param>
   		/// <remarks>
  +		/// <para>
   		/// The type specified must implement the <see cref="IConvertFrom"/> 
   		/// or the <see cref="IConvertTo"/> interfaces.
  +		/// </para>
   		/// </remarks>
   		public TypeConverterAttribute(Type converterType)
   		{
  @@ -87,8 +101,10 @@
   		/// The string type name of the type converter 
   		/// </value>
   		/// <remarks>
  +		/// <para>
   		/// The type specified must implement the <see cref="IConvertFrom"/> 
   		/// or the <see cref="IConvertTo"/> interfaces.
  +		/// </para>
   		/// </remarks>
   		public string ConverterTypeName
   		{