nicko       2004/08/19 14:31:09

  Modified:    src/Repository/Hierarchy XmlHierarchyConfigurator.cs
  Log:
  Added explicit parameter subtype specification. This allows the subtype of
  a property to be specified in the config file allowing an appropriate
  converter to be found for the string value. This allows the following to
  be specified in the config file:
  
  <layout type="log4net.Layout.PatternLayout" value="%d [%t] %-5p %c [%x] - 
%m%n" />
  
  This leverages the pattern layout TypeConverter to convert the value into the
  required type.
  
  Revision  Changes    Path
  1.8       +29 -0     
logging-log4net/src/Repository/Hierarchy/XmlHierarchyConfigurator.cs
  
  Index: XmlHierarchyConfigurator.cs
  ===================================================================
  RCS file: 
/home/cvs/logging-log4net/src/Repository/Hierarchy/XmlHierarchyConfigurator.cs,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XmlHierarchyConfigurator.cs       30 Jul 2004 17:35:50 -0000      1.7
  +++ XmlHierarchyConfigurator.cs       19 Aug 2004 21:31:09 -0000      1.8
  @@ -552,6 +552,35 @@
                                                LogLog.Debug("XmlConfigurator: 
Security exception while trying to expand environment variables. Error Ignored. 
No Expansion.");
                                        }
   #endif
  +
  +                                     // Check if a specific subtype is 
specified on the element using the 'type' attribute
  +                                     string subTypeString = 
element.GetAttribute(TYPE_ATTR);
  +                                     if (subTypeString != null && 
subTypeString.Length > 0)
  +                                     {
  +                                             // Read the explicit subtype
  +                                             try
  +                                             {
  +                                                     Type subType = 
SystemInfo.GetTypeFromString(subTypeString, true, true);
  +
  +                                                     
LogLog.Debug("XmlConfigurator: Parameter ["+name+"] specified subtype 
["+subType.FullName+"]");
  +
  +                                                     if 
(!propertyType.IsAssignableFrom(subType))
  +                                                     {
  +                                                             
LogLog.Error("XmlConfigurator: Subtype ["+subType.FullName+"] set on ["+name+"] 
is not a subclass of property type ["+propertyType.FullName+"]");
  +                                                     }
  +                                                     else
  +                                                     {
  +                                                             // The subtype 
specified is found and is actually a subtype of the property
  +                                                             // type, 
therefore we can switch to using this type.
  +                                                             propertyType = 
subType;
  +                                                     }
  +                                             }
  +                                             catch(Exception ex)
  +                                             {
  +                                                     
LogLog.Error("XmlConfigurator: Failed to find type ["+subTypeString+"] set on 
["+name+"]", ex);
  +                                             }
  +                                     }
  +
                                        // Now try to convert the string value 
to an acceptable type
                                        // to pass to this property.
   
  
  
  

Reply via email to