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
{