<?xml version="1.0"?>
<doc>
    <assembly>
        <name>YCH.Core</name>
    </assembly>
    <members>
        <member name="T:YCH.Attributes.CacheAttribute">
            <summary>
            This attribute can be used to mark properties and methods that should
            be cached.
            </summary>
            <remarks>
            <p>
            This attribute allows application developers to mark that a certain
            property or method result should be cached, but it will not do any
            caching by itself.
            </p>
            <p>
            In order to actually cache appropriate data, an application developer
            must apply a subclass of the <c>YCH.Aop.Advice.CacheAdvice</c> to
            all of the members that have this attribute defined.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: CacheAttribute.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Attributes.CacheAttribute.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Attributes.CacheAttribute"/> class.
            </summary>
        </member>
        <member name="M:YCH.Attributes.CacheAttribute.#ctor(YCH.Attributes.CachePriority,System.Int32,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Attributes.CacheAttribute"/> class.
            </summary>
            <param name="priority">
            The cache priority for the item.
            </param>
            <param name="timeToLive">
            The amount of time an object should remain in the cache (in seconds).
            </param>
            <param name="slidingExpiration">
            <see lang="true"/> if a sliding expiration cache strategy is to be used.
            </param>
        </member>
        <member name="P:YCH.Attributes.CacheAttribute.TimeToLive">
            <summary>
            The amount of time an object should remain in the cache (in seconds).
            </summary>
            <remarks>
            <p>
            The default time is 0, which means that an object will never expire.
            </p>
            </remarks>
            <value>
            The amount of time object should remain in the cache (in seconds).
            </value>
        </member>
        <member name="P:YCH.Attributes.CacheAttribute.SlidingExpiration">
            <summary>
            Is a sliding expiration cache strategy to be used?
            </summary>
            <remarks>
            <p>
            If this property value is set to <see lang="true"/>, every time the
            marked object is accessed it's
            <see cref="P:YCH.Attributes.CacheAttribute.TimeToLive"/> property
            value must be reset to it's original value.
            </p>
            </remarks>
            <value>
            <see lang="true"/> if sliding expiration is to be used.
            </value>
        </member>
        <member name="P:YCH.Attributes.CacheAttribute.Priority">
            <summary>
            The cache priority for the item.
            </summary>
            <value>
            One of the <see cref="T:YCH.Attributes.CachePriority"/> enumeration values.
            </value>
        </member>
        <member name="T:YCH.Attributes.CachePriority">
            <summary>
            Cache item priority controlling how likely an object is to be removed from
            an associated cache when the cache is being purged.
            </summary>
            <remarks>
            <p>
            The <see cref="F:YCH.Attributes.CachePriority.Default"/> priority is
            <see cref="F:YCH.Attributes.CachePriority.Normal"/>.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Attributes.CachePriority.Low">
            <summary>
            Cache items with this priority level are the most likely to be deleted 
            from the cache as the cache is purged.
            </summary>
        </member>
        <member name="F:YCH.Attributes.CachePriority.Normal">
            <summary>
            Cache items with this priority level are likely to be deleted from the cache 
            as the cache is purged only <b>after</b> those items with 
            <see cref="F:YCH.Attributes.CachePriority.Low"/> priority.
            </summary>
            <remarks>
            <p>
            This is the default <see cref="T:YCH.Attributes.CachePriority"/>.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Attributes.CachePriority.High">
            <summary>
            Cache items with this priority level are the least likely to be deleted 
            as the cache is purged.
            </summary>
        </member>
        <member name="F:YCH.Attributes.CachePriority.NotRemovable">
            <summary>
            Cache items with this priority level will not be deleted from 
            the cache as the cache is purged.
            </summary>
        </member>
        <member name="F:YCH.Attributes.CachePriority.Default">
            <summary>
            The default value for a cached item's priority is
            <see cref="F:YCH.Attributes.CachePriority.Normal"/>.
            </summary>
        </member>
        <member name="T:YCH.Collections.AbstractQueue">
            <summary> 
            This class provides skeletal implementations of some
            <see cref="T:YCH.Collections.IQueue"/> operations.
            </summary>
            <remarks>
            <p>
            The implementations in this class are appropriate when the base
            implementation does not allow <see lang="null"/> elements. The methods
            <see cref="M:YCH.Collections.AbstractQueue.Add(System.Object)"/>,
            <see cref="M:YCH.Collections.AbstractQueue.Remove"/>, and
            <see cref="M:YCH.Collections.AbstractQueue.Element"/> are based on
            the <see cref="M:YCH.Collections.AbstractQueue.Offer(System.Object)"/>,
            <see cref="M:YCH.Collections.AbstractQueue.Poll"/>, and
            <see cref="M:YCH.Collections.AbstractQueue.Peek"/> methods
            respectively but throw exceptions instead of indicating failure via
            <see lang="false"/> or <see lang="null"/> returns.
            <p/> 
            An <see cref="T:YCH.Collections.IQueue"/> implementation that extends this class must
            minimally define a method
            <see cref="M:YCH.Collections.AbstractQueue.Offer(System.Object)"/> which does
            not permit the insertion of <see lang="null"/> elements, along with methods 
            <see cref="M:YCH.Collections.AbstractQueue.Poll"/>, and
            <see cref="M:YCH.Collections.AbstractQueue.Peek"/>. Typically,
            additional methods will be overridden as well. If these requirements
            cannot be met, consider instead subclassing
            <see cref="T:System.Collections.CollectionBase"/>}.
            </p>
            </remarks>
            <author>Doug Lea</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: AbstractQueue.cs,v 1.6 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Collections.IQueue">
            <summary>
            A collection designed for holding elements prior to processing.
            </summary>
            <remarks>
            <p>
            Besides basic <see cref="T:System.Collections.ICollection"/> operations,
            queues provide additional insertion, extraction, and inspection
            operations.
            </p>
            <p>
            Each of these methods exists in two forms: one throws
            an exception if the operation fails, the other returns a special
            value (either <see lang="null"/> or <see lang="false"/>, depending on the
            operation). The latter form of the insert operation is designed
            specifically for use with capacity-restricted <see cref="T:YCH.Collections.IQueue"/>
            implementations; in most implementations, insert operations cannot
            fail.
            </p>
            <p>
            Queues typically, but do not necessarily, order elements in a
            FIFO (first-in-first-out) manner. Among the exceptions are
            priority queues, which order elements according to a supplied
            comparator, or the elements' natural ordering, and LIFO queues (or
            stacks) which order the elements LIFO (last-in-first-out).
            Whatever the ordering used, the head of the queue is that
            element which would be removed by a call to
            <see cref="M:YCH.Collections.IQueue.Remove"/> or
            <see cref="M:YCH.Collections.IQueue.Poll"/>. In a FIFO queue, all new
            elements are inserted at the tail of the queue. Other kinds of queues may
            use different placement rules. Every <see cref="T:YCH.Collections.IQueue"/> implementation
            must specify its ordering properties.
            </p>
            <p>
            The <see cref="M:YCH.Collections.IQueue.Offer(System.Object)"/> method inserts an
            element if possible, otherwise returning <see lang="false"/>. This differs from the 
            <see cref="M:YCH.Collections.IQueue.Add(System.Object)"/> method, which can fail to
            add an element only by throwing an exception. The
            <see cref="M:YCH.Collections.IQueue.Offer(System.Object)"/> method is designed for
            use when failure is a normal, rather than exceptional occurrence, for example,
            in fixed-capacity (or "bounded" queues.
            </p>
            <p>
            The <see cref="M:YCH.Collections.IQueue.Remove"/>
            <see cref="M:YCH.Collections.IQueue.Poll"/> methods remove and
            return the head of the queue. Exactly which element is removed from the
            queue is a function of the queue's ordering policy, which differs from
            implementation to implementation. The
            <see cref="M:YCH.Collections.IQueue.Remove"/> and
            <see cref="M:YCH.Collections.IQueue.Poll"/> methods differ only in their
            behavior when the queue is empty: the
            <see cref="M:YCH.Collections.IQueue.Remove"/> method throws an exception,
            while the <see cref="M:YCH.Collections.IQueue.Poll"/> method returns
            <see lang="null"/>.
            </p>
            <p>
            The <see cref="M:YCH.Collections.IQueue.Element"/> and
            <see cref="M:YCH.Collections.IQueue.Peek"/> methods return, but do
            not remove, the head of the queue.
            </p>
            <p>
            The <see cref="T:YCH.Collections.IQueue"/> interface does not define the blocking queue
            methods, which are common in concurrent programming.
            </p>
            <p>
            <see cref="T:YCH.Collections.IQueue"/> implementations generally do not allow insertion
            of <see lang="null"/> elements, although some implementations, such as
            a linked list, do not prohibit the insertion of <see lang="null"/>.
            Even in the implementations that permit it, <see lang="null"/> should
            not be inserted into a <see cref="T:YCH.Collections.IQueue"/>, as <see lang="null"/> is also
            used as a special return value by the
            <see cref="M:YCH.Collections.IQueue.Poll"/> method to
            indicate that the queue contains no elements.
            </p>
            <p>
            <see cref="T:YCH.Collections.IQueue"/> implementations generally do not define
            element-based versions of methods <see cref="M:System.Object.Equals(System.Object)"/> 
            and <see cref="M:System.Object.GetHashCode"/>, but instead inherit the
            identity based versions from the class object, because element-based equality
            is not always well-defined for queues with the same elements but different
            ordering properties.
            </p>
            <p>
            Based on the back port of JCP JSR-166.
            </p>
            </remarks>
            <author>Doug Lea</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: IQueue.cs,v 1.6 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.IQueue.Add(System.Object)">
            <summary> 
            Inserts the specified element into this queue if it is possible to do so
            immediately without violating capacity restrictions, returning
            <see lang="true"/> upon success and throwing an
            <see cref="T:System.InvalidOperationException"/> if no space is
            currently available.
            </summary>
            <param name="objectToAdd">
            The element to add.
            </param>
            <returns> 
            <see lang="true"/> if successful.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            If the element cannot be added at this time due to capacity restrictions.
            </exception>
            <exception cref="T:System.InvalidCastException">
            If the class of the supplied <paramref name="objectToAdd"/> prevents it
            from being added to this queue.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the specified element is <see lang="null"/> and this queue does not
            permit <see lang="null"/> elements.
            </exception>
            <exception cref="T:System.ArgumentException">
            If some property of the supplied <paramref name="objectToAdd"/> prevents
            it from being added to this queue.
            </exception>
        </member>
        <member name="M:YCH.Collections.IQueue.Offer(System.Object)">
            <summary> 
            Inserts the specified element into this queue if it is possible to do
            so immediately without violating capacity restrictions.
            </summary>
            <remarks>
            <p>
            When using a capacity-restricted queue, this method is generally
            preferable to <see cref="M:YCH.Collections.IQueue.Add(System.Object)"/>,
            which can fail to insert an element only by throwing an exception.
            </p>
            </remarks>
            <param name="objectToAdd">
            The element to add.
            </param>
            <returns>
            <see lang="true"/> if the element was added to this queue.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            If the element cannot be added at this time due to capacity restrictions.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="objectToAdd"/> is
            <see lang="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If some property of the supplied <paramref name="objectToAdd"/> prevents
            it from being added to this queue.
            </exception>
        </member>
        <member name="M:YCH.Collections.IQueue.Remove">
            <summary> 
            Retrieves and removes the head of this queue.
            </summary>
            <remarks>
            <p>
            This method differs from <see cref="M:YCH.Collections.IQueue.Poll"/>
            only in that it throws an exception if this queue is empty.
            </p>
            </remarks>
            <returns> 
            The head of this queue
            </returns>
            <exception cref="T:YCH.Collections.NoElementsException">if this queue is empty</exception>
        </member>
        <member name="M:YCH.Collections.IQueue.Poll">
            <summary> 
            Retrieves and removes the head of this queue,
            or returns <see lang="null"/> if this queue is empty.
            </summary>
            <returns> 
            The head of this queue, or <see lang="null"/> if this queue is empty.
            </returns>
        </member>
        <member name="M:YCH.Collections.IQueue.Element">
            <summary> 
            Retrieves, but does not remove, the head of this queue.
            </summary>
            <remarks>
            <p>
            This method differs from <see cref="M:YCH.Collections.IQueue.Peek"/>
            only in that it throws an exception if this queue is empty.
            </p>
            </remarks>
            <returns> 
            The head of this queue.
            </returns>
            <exception cref="T:YCH.Collections.NoElementsException">If this queue is empty.</exception>
        </member>
        <member name="M:YCH.Collections.IQueue.Peek">
            <summary> 
            Retrieves, but does not remove, the head of this queue,
            or returns <see lang="null"/> if this queue is empty.
            </summary>
            <returns> 
            The head of this queue, or <see lang="null"/> if this queue is empty.
            </returns>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Collections.AbstractQueue"/> class.
            </summary>
            <remarks>
            <p>
            This is an abstract class, and as such has no publicly
            visible constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.Add(System.Object)">
            <summary> 
            Inserts the specified element into this queue if it is possible
            to do so immediately without violating capacity restrictions.
            </summary>
            <param name="objectToAdd">
            The element to add.
            </param>
            <returns> 
            <see lang="true"/> if successful.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            If the element cannot be added at this time due to capacity restrictions.
            </exception>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.Remove">
            <summary> 
            Retrieves and removes the head of this queue.
            </summary>
            <remarks>
            <p>
            This method differs from
            <see cref="M:YCH.Collections.AbstractQueue.Poll"/> only in that
            it throws an exception if this queue is empty.
            </p>
            </remarks>
            <returns> 
            The head of this queue
            </returns>
            <exception cref="T:YCH.Collections.NoElementsException">
            If this queue is empty.
            </exception>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.Element">
            <summary> 
            Retrieves, but does not remove, the head of this queue.
            </summary>
            <remarks>
            <p>
            This method differs from <see cref="M:YCH.Collections.AbstractQueue.Peek"/>
            only in that it throws an exception if this queue is empty.
            </p>
            <p>
            ALso note that this implementation returns the result of
            <see cref="M:YCH.Collections.AbstractQueue.Peek"/> unless the queue
            is empty.
            </p>
            </remarks>
            <returns>The head of this queue.</returns>
            <exception cref="T:YCH.Collections.NoElementsException">
            If this queue is empty.
            </exception>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.Clear">
            <summary> 
            Removes all of the elements from this queue.
            </summary>
            <remarks>
            <p>
            The queue will be empty after this call returns.
            </p>
            <p>
            This implementation repeatedly invokes
            <see cref="M:YCH.Collections.AbstractQueue.Poll"/> until it
            returns <see lang="null"/>.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Collections.AbstractQueue.AddAll(System.Collections.ICollection)">
            <summary> 
            Adds all of the elements in the supplied <paramref name="collection"/>
            to this queue.
            </summary>
            <remarks>
            <p>
            Attempts to
            <see cref="M:YCH.Collections.AbstractQueue.AddAll(System.Collections.ICollection)"/>
            of a queue to itself result in <see cref="T:System.ArgumentException"/>.
            Further, the behavior of this operation is undefined if the specified
            collection is modified while the operation is in progress.
            </p>
            <p>
            This implementation iterates over the specified collection,
            and adds each element returned by the iterator to this queue, in turn.
            An exception encountered while trying to add an element (including,
            in particular, a <see lang="null"/> element) may result in only some
            of the elements having been successfully added when the associated
            exception is thrown.
            </p>
            </remarks>
            <param name="collection">
            The collection containing the elements to be added to this queue.
            </param>
            <returns>
            <see lang="true"/> if this queue changed as a result of the call.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="collection"/> or any one of its elements are <see lang="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the collection is the current <see cref="T:YCH.Collections.IQueue"/> or 
            the collection size is greater than the queue capacity.
            </exception>
        </member>
        <member name="T:YCH.Collections.DictionarySet">
            <summary>
            <see cref="T:YCH.Collections.DictionarySet"/> is an
            <see langword="abstract"/> class that supports the creation of new
            <see cref="T:YCH.Collections.ISet"/> types where the underlying data
            store is an <see cref="T:System.Collections.IDictionary"/> instance.
            </summary>
            <remarks>
            <p>
            You can use any object that implements the
            <see cref="T:System.Collections.IDictionary"/> interface to hold set
            data. You can define your own, or you can use one of the objects
            provided in the framework. The type of
            <see cref="T:System.Collections.IDictionary"/> you
            choose will affect both the performance and the behavior of the
            <see cref="T:YCH.Collections.ISet"/> using it.
            </p>
            <p>
            This object overrides the <see cref="M:System.Object.Equals(System.Object)"/> method,
            but not the <see cref="M:System.Object.GetHashCode"/> method, because
            the <see cref="T:YCH.Collections.DictionarySet"/> class is mutable.
            Therefore, it is not safe to use as a key value in a dictionary.
            </p>
            <p>
            To make a <see cref="T:YCH.Collections.ISet"/> typed based on your
            own <see cref="T:System.Collections.IDictionary"/>, simply derive a new
            class with a constructor that takes no parameters. Some
            <see cref="T:YCH.Collections.ISet"/> implmentations cannot be defined
            with a default constructor. If this is the case for your class, you
            will need to override <b>clone</b> as well.
            </p>
            <p>
            It is also standard practice that at least one of your constructors
            takes an <see cref="T:System.Collections.ICollection"/> or an
            <see cref="T:YCH.Collections.ISet"/> as an argument.
            </p>
            </remarks>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: DictionarySet.cs,v 1.6 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Collections.Set">
            <summary>
            A collection that contains no duplicate elements.
            </summary>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: Set.cs,v 1.6 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Collections.ISet">
            <summary>
            A collection that contains no duplicate elements.
            </summary>
            <remarks>
            <p>
            This interface models the mathematical
            <see cref="T:YCH.Collections.ISet"/> abstraction. The order of
            elements in a set is dependant on (a)the data-structure implementation, and 
            (b)the implementation of the various
            <see cref="T:YCH.Collections.ISet"/> methods, and thus is not
            guaranteed.
            </p>
            <p>
            <see cref="T:YCH.Collections.ISet"/> overrides the
            <see cref="M:System.Object.Equals(System.Object)"/> method to test for "equivalency":
            whether the two sets contain the same elements. The "==" and "!="
            operators are not overridden by design, since it is often desirable to
            compare object references for equality.
            </p>
            <p>
            Also, the <see cref="M:System.Object.GetHashCode"/> method is not
            implemented on any of the set implementations, since none of them are
            truly immutable. This is by design, and it is the way almost all
            collections in the .NET framework function. So as a general rule, don't
            store collection objects inside <see cref="T:YCH.Collections.ISet"/>
            instances. You would typically want to use a keyed
            <see cref="T:System.Collections.IDictionary"/> instead.
            </p>
            <p>
            None of the <see cref="T:YCH.Collections.ISet"/> implementations in
            this library are guaranteed to be thread-safe in any way unless wrapped
            in a <see cref="T:YCH.Collections.SynchronizedSet"/>.
            </p>
            <p>
            The following table summarizes the binary operators that are supported
            by the <see cref="T:YCH.Collections.ISet"/> class.
            </p>
            <list type="table">
            	<listheader>
            		<term>Operation</term>
            		<term>Description</term>
            		<term>Method</term>
            	</listheader>
            	<item>
            		<term>Union (OR)</term>
            		<term>
            		Element included in result if it exists in either <c>A</c> OR
            		<c>B</c>.
            		</term>
            		<term><c>Union()</c></term>
            	</item>
            	<item>
            		<term>Intersection (AND)</term>
            		<term>
            		Element included in result if it exists in both <c>A</c> AND
            		<c>B</c>.
            		</term>
            		<term><c>InterSect()</c></term>
            	</item>
            	<item>
            		<term>Exclusive Or (XOR)</term>
            		<term>
            		Element included in result if it exists in one, but not both,
            		of <c>A</c> and <c>B</c>.
            		</term>
            		<term><c>ExclusiveOr()</c></term>
            	</item>
            	<item>
            		<term>Minus (n/a)</term>
            		<term>
            		Take all the elements in <c>A</c>. Now, if any of them exist in
            		 <c>B</c>, remove them. Note that unlike the other operators,
            		 <c>A - B</c> is not the same as <c>B - A</c>.
            		 </term>
            		<term><c>Minus()</c></term>
            	</item>
            </list>
            </remarks>
            <version>$Id: ISet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.ISet.Union(YCH.Collections.ISet)">
            <summary>
            Performs a "union" of the two sets, where all the elements
            in both sets are present. 
            </summary>
            <remarks>
            <p>
            That is, the element is included if it is in either
            <paramref name="setOne"/> or this set. Neither this set nor the input
            set are modified during the operation. The return value is a
            <b>clone</b> of this set with the extra elements added in.
            </p>
            </remarks>
            <param name="setOne">A collection of elements.</param>
            <returns>
            A new <see cref="T:YCH.Collections.ISet"/> containing the union of
            this <see cref="T:YCH.Collections.ISet"/> with the specified
            collection. Neither of the input objects is modified by the union.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Intersect(YCH.Collections.ISet)">
            <summary>
            Performs an "intersection" of the two sets, where only the elements
            that are present in both sets remain.
            </summary>
            <remarks>
            <p>
            That is, the element is included if it exists in both sets. The
            <c>Intersect()</c> operation does not modify the input sets. It
            returns a <b>clone</b> of this set with the appropriate elements
            removed.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <returns>
            The intersection of this set with <paramref name="setOne"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Minus(YCH.Collections.ISet)">
            <summary>
            Performs a "minus" of this set from the <paramref name="setOne"/>
            set.
            </summary>
            <remarks>
            <p>
            This returns a set of all the elements in set
            <paramref name="setOne"/>, removing the elements that are also in
            this set. The original sets are not modified during this operation.
            The result set is a <b>clone</b> of this
            <see cref="T:YCH.Collections.ISet"/> containing the elements from
            the operation.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the elements from this set with the elements in
            <paramref name="setOne"/> removed.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.ExclusiveOr(YCH.Collections.ISet)">
            <summary>
            Performs an "exclusive-or" of the two sets, keeping only those
            elements that are in one of the sets, but not in both.
            </summary>
            <remarks>
            <p>
            The original sets are not modified during this operation. The
            result set is a <b>clone</b> of this set containing the elements
            from the exclusive-or operation.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the result of
            <c><paramref name="setOne"/> ^ this</c>.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this set contains the specified
            element.
            </summary>
            <param name="element">The element to look for.</param>
            <returns>
            <see langword="true"/> if this set contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.ContainsAll(System.Collections.ICollection)">
            <summary>
            Returns <see langword="true"/> if the set contains all the
            elements in the specified collection.
            </summary>
            <param name="collection">A collection of objects.</param>
            <returns>
            <see langword="true"/> if the set contains all the elements in the
            specified collection.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Add(System.Object)">
            <summary>
            Adds the specified element to this set if it is not already present.
            </summary>
            <param name="element">The object to add to the set.</param>
            <returns>
            <see langword="true"/> is the object was added,
            <see langword="true"/> if the object was already present.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.AddAll(System.Collections.ICollection)">
            <summary>
            Adds all the elements in the specified collection to the set if
            they are not already present.
            </summary>
            <param name="collection">A collection of objects to add to the set.</param>
            <returns>
            <see langword="true"/> is the set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Remove(System.Object)">
            <summary>
            Removes the specified element from the set.
            </summary>
            <param name="element">The element to be removed.</param>
            <returns>
            <see langword="true"/> if the set contained the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.RemoveAll(System.Collections.ICollection)">
            <summary>
            Remove all the specified elements from this set, if they exist in
            this set.
            </summary>
            <param name="collection">A collection of elements to remove.</param>
            <returns>
            <see langword="true"/> if the set was modified as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.RetainAll(System.Collections.ICollection)">
            <summary>
            Retains only the elements in this set that are contained in the
            specified collection.
            </summary>
            <param name="collection">
            The collection that defines the set of elements to be retained.
            </param>
            <returns>
            <see langword="true"/> if this set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.ISet.Clear">
            <summary>
            Removes all objects from this set.
            </summary>
        </member>
        <member name="P:YCH.Collections.ISet.IsEmpty">
            <summary>
            Returns <see langword="true"/> if this set contains no elements.
            </summary>
        </member>
        <member name="M:YCH.Collections.Set.Union(YCH.Collections.ISet)">
            <summary>
            Performs a "union" of the two sets, where all the elements
            in both sets are present. 
            </summary>
            <param name="setOne">A collection of elements.</param>
            <returns>
            A new <see cref="T:YCH.Collections.ISet"/> containing the union of
            this <see cref="T:YCH.Collections.ISet"/> with the specified
            collection. Neither of the input objects is modified by the union.
            </returns>
            <see cref="M:YCH.Collections.ISet.Union(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Union(YCH.Collections.ISet,YCH.Collections.ISet)">
            <summary>
            Performs a "union" of two sets, where all the elements in both are
            present.
            </summary>
            <remarks>
            <p>
            That is, the element is included if it is in either
            <paramref name="setOne"/> or <paramref name="anotherSet"/>. The return
            value is a <b>clone</b> of one of the sets (<paramref name="setOne"/>
            if it is not <see langword="null"/>) with elements of the other set
            added in. Neither of the input sets is modified by the operation.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing the union of the input sets;
            <see langword="null"/> if both sets are <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.op_BitwiseOr(YCH.Collections.Set,YCH.Collections.Set)">
            <summary>
            Performs a "union" of two sets, where all the elements in both are
            present.
            </summary>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing the union of the input sets;
            <see langword="null"/> if both sets are <see langword="null"/>.
            </returns>
            <seealso cref="M:YCH.Collections.Set.Union(YCH.Collections.ISet,YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Intersect(YCH.Collections.ISet)">
            <summary>
            Performs an "intersection" of the two sets, where only the elements
            that are present in both sets remain.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            The intersection of this set with <paramref name="setOne"/>.
            </returns>
            <see cref="M:YCH.Collections.ISet.Intersect(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Intersect(YCH.Collections.ISet,YCH.Collections.ISet)">
            <summary>
            Performs an "intersection" of the two sets, where only the elements
            that are present in both sets remain. 
            </summary>
            <remarks>
            <p>
            That is, the element is included only if it exists in both
            <paramref name="setOne"/> and <paramref name="anotherSet"/>. Neither input
            object is modified by the operation. The result object is a
            <b>clone</b> of one of the input objects (<paramref name="setOne"/>
            if it is not <see langword="null"/>) containing the elements from
            the intersect operation.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            The intersection of the two input sets; <see langword="null"/> if
            both sets are <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.op_BitwiseAnd(YCH.Collections.Set,YCH.Collections.Set)">
            <summary>
            Performs an "intersection" of the two sets, where only the elements
            that are present in both sets remain. 
            </summary>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            The intersection of the two input sets; <see langword="null"/> if
            both sets are <see langword="null"/>.
            </returns>
            <seealso cref="M:YCH.Collections.Set.Intersect(YCH.Collections.ISet,YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Minus(YCH.Collections.ISet)">
            <summary>
            Performs a "minus" of this set from the <paramref name="setOne"/>
            set.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the elements from this set with the elements in
            <paramref name="setOne"/> removed.
            </returns>
            <seealso cref="M:YCH.Collections.ISet.Minus(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Minus(YCH.Collections.ISet,YCH.Collections.ISet)">
            <summary>
            Performs a "minus" of set <paramref name="anotherSet"/> from set
            <paramref name="setOne"/>.
            </summary>
            <remarks>
            <p>
            This returns a set of all the elements in set
            <paramref name="setOne"/>, removing the elements that are also in
            set <paramref name="anotherSet"/>. The original sets are not modified
            during this operation. The result set is a <b>clone</b> of set
            <paramref name="setOne"/> containing the elements from the operation. 
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing
            <c><paramref name="setOne"/> - <paramref name="anotherSet"/></c> elements.
            <see langword="null"/> if <paramref name="setOne"/> is
            <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.op_Subtraction(YCH.Collections.Set,YCH.Collections.Set)">
            <summary>
            Performs a "minus" of set <paramref name="anotherSet"/> from set
            <paramref name="setOne"/>.
            </summary>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing
            <c><paramref name="setOne"/> - <paramref name="anotherSet"/></c> elements.
            <see langword="null"/> if <paramref name="setOne"/> is
            <see langword="null"/>.
            </returns>
            <seealso cref="M:YCH.Collections.Set.Minus(YCH.Collections.ISet,YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.ExclusiveOr(YCH.Collections.ISet)">
            <summary>
            Performs an "exclusive-or" of the two sets, keeping only those
            elements that are in one of the sets, but not in both.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the result of
            <c><paramref name="setOne"/> ^ this</c>.
            </returns>
            <seealso cref="M:YCH.Collections.ISet.ExclusiveOr(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.ExclusiveOr(YCH.Collections.ISet,YCH.Collections.ISet)">
            <summary>
            Performs an "exclusive-or" of the two sets, keeping only those
            elements that are in one of the sets, but not in both.
            </summary>
            <remarks>
            <p>
            The original sets are not modified during this operation. The
            result set is a <b>clone</b> of one of the sets (
            <paramref name="setOne"/> if it is not <see langword="null"/>)
            containing the elements from the exclusive-or operation.
            </p>
            </remarks>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing the result of
            <c><paramref name="setOne"/> ^ <paramref name="anotherSet"/></c>.
            <see langword="null"/> if both sets are <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.op_ExclusiveOr(YCH.Collections.Set,YCH.Collections.Set)">
            <summary>
            Performs an "exclusive-or" of the two sets, keeping only those
            elements that are in one of the sets, but not in both.
            </summary>
            <param name="setOne">A set of elements.</param>
            <param name="anotherSet">A set of elements.</param>
            <returns>
            A set containing the result of
            <c><paramref name="setOne"/> ^ <paramref name="anotherSet"/></c>.
            <see langword="null"/> if both sets are <see langword="null"/>.
            </returns>
            <seealso cref="M:YCH.Collections.Set.ExclusiveOr(YCH.Collections.ISet,YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.Set.Add(System.Object)">
            <summary>
            Adds the specified element to this set if it is not already present.
            </summary>
            <param name="element">The object to add to the set.</param>
            <returns>
            <see langword="true"/> is the object was added,
            <see langword="true"/> if the object was already present.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.AddAll(System.Collections.ICollection)">
            <summary>
            Adds all the elements in the specified collection to the set if
            they are not already present.
            </summary>
            <param name="collection">A collection of objects to add to the set.</param>
            <returns>
            <see langword="true"/> is the set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.Clear">
            <summary>
            Removes all objects from this set.
            </summary>
        </member>
        <member name="M:YCH.Collections.Set.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this set contains the specified
            element.
            </summary>
            <param name="element">The element to look for.</param>
            <returns>
            <see langword="true"/> if this set contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.ContainsAll(System.Collections.ICollection)">
            <summary>
            Returns <see langword="true"/> if the set contains all the
            elements in the specified collection.
            </summary>
            <param name="collection">A collection of objects.</param>
            <returns>
            <see langword="true"/> if the set contains all the elements in the
            specified collection.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.Remove(System.Object)">
            <summary>
            Removes the specified element from the set.
            </summary>
            <param name="element">The element to be removed.</param>
            <returns>
            <see langword="true"/> if the set contained the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.RemoveAll(System.Collections.ICollection)">
            <summary>
            Remove all the specified elements from this set, if they exist in
            this set.
            </summary>
            <param name="collection">A collection of elements to remove.</param>
            <returns>
            <see langword="true"/> if the set was modified as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.RetainAll(System.Collections.ICollection)">
            <summary>
            Retains only the elements in this set that are contained in the
            specified collection.
            </summary>
            <param name="collection">
            The collection that defines the set of elements to be retained.
            </param>
            <returns>
            <see langword="true"/> if this set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.Clone">
            <summary>
            Returns a clone of the <see cref="T:YCH.Collections.ISet"/>
            instance.
            </summary>
            <remarks>
            <p>
            This will work for derived <see cref="T:YCH.Collections.ISet"/>
            classes if the derived class implements a constructor that takes no
            arguments.
            </p>
            </remarks>
            <returns>A clone of this object.</returns>
        </member>
        <member name="M:YCH.Collections.Set.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements in the <see cref="T:YCH.Collections.ISet"/> to
            an array.
            </summary>
            <remarks>
            <p>
            The type of array needs to be compatible with the objects in the
            <see cref="T:YCH.Collections.ISet"/>, obviously.
            </p>
            </remarks>
            <param name="array">
            An array that will be the target of the copy operation.
            </param>
            <param name="index">
            The zero-based index where copying will start.
            </param>
        </member>
        <member name="M:YCH.Collections.Set.GetEnumerator">
            <summary>
            Gets an enumerator for the elements in the
            <see cref="T:YCH.Collections.ISet"/>.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> over the elements
            in the <see cref="T:YCH.Collections.ISet"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.Equals(System.Object)">
            <summary>
            This method will test the <see cref="T:YCH.Collections.ISet"/>
            against another <see cref="T:YCH.Collections.ISet"/> for
            "equality".
            </summary>
            <remarks>
            <p>
            In this case, "equality" means that the two sets contain the same
            elements. The "==" and "!=" operators are not overridden by design.
            If you wish to check for "equivalent"
            <see cref="T:YCH.Collections.ISet"/> instances, use
            <c>Equals()</c>. If you wish to check to see if two references are
            actually the same object, use "==" and "!=".  
            </p>
            </remarks>
            <param name="obj">
            A <see cref="T:YCH.Collections.ISet"/> object to compare to.
            </param>
            <returns>
            <see langword="true"/> if the two sets contain the same elements.
            </returns>
        </member>
        <member name="M:YCH.Collections.Set.GetHashCode">
            <summary>
            Gets the hashcode for the object.
            </summary>
        </member>
        <member name="P:YCH.Collections.Set.IsEmpty">
            <summary>
            Returns <see langword="true"/> if this set contains no elements.
            </summary>
        </member>
        <member name="P:YCH.Collections.Set.Count">
            <summary>
            The number of elements currently contained in this collection.
            </summary>
        </member>
        <member name="P:YCH.Collections.Set.IsSynchronized">
            <summary>
            Returns <see langword="true"/> if the
            <see cref="T:YCH.Collections.ISet"/> is synchronized across
            threads.
            </summary>
            <remarks>
            <p>
            Note that enumeration is inherently not thread-safe. Use the
            <see cref="P:YCH.Collections.Set.SyncRoot"/> to lock the object during enumeration.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Collections.Set.SyncRoot">
            <summary>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </summary>
            <remarks>
            <p>
            When implementing this, if your object uses a base object, like an
            <see cref="T:System.Collections.IDictionary"/>, or anything that has
            a <c>SyncRoot</c>, return that object instead of "<c>this</c>".
            </p>
            </remarks>
            <value>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </value>
        </member>
        <member name="M:YCH.Collections.DictionarySet.Add(System.Object)">
            <summary>
            Adds the specified element to this set if it is not already present.
            </summary>
            <param name="element">The object to add to the set.</param>
            <returns>
            <see langword="true"/> is the object was added,
            <see langword="true"/> if the object was already present.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.AddAll(System.Collections.ICollection)">
            <summary>
            Adds all the elements in the specified collection to the set if
            they are not already present.
            </summary>
            <param name="collection">A collection of objects to add to the set.</param>
            <returns>
            <see langword="true"/> is the set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.Clear">
            <summary>
            Removes all objects from this set.
            </summary>
        </member>
        <member name="M:YCH.Collections.DictionarySet.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this set contains the specified
            element.
            </summary>
            <param name="element">The element to look for.</param>
            <returns>
            <see langword="true"/> if this set contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.ContainsAll(System.Collections.ICollection)">
            <summary>
            Returns <see langword="true"/> if the set contains all the
            elements in the specified collection.
            </summary>
            <param name="collection">A collection of objects.</param>
            <returns>
            <see langword="true"/> if the set contains all the elements in the
            specified collection; also <see langword="false"/> if the
            supplied <paramref name="collection"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.Remove(System.Object)">
            <summary>
            Removes the specified element from the set.
            </summary>
            <param name="element">The element to be removed.</param>
            <returns>
            <see langword="true"/> if the set contained the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.RemoveAll(System.Collections.ICollection)">
            <summary>
            Remove all the specified elements from this set, if they exist in
            this set.
            </summary>
            <param name="collection">A collection of elements to remove.</param>
            <returns>
            <see langword="true"/> if the set was modified as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.RetainAll(System.Collections.ICollection)">
            <summary>
            Retains only the elements in this set that are contained in the
            specified collection.
            </summary>
            <param name="collection">
            The collection that defines the set of elements to be retained.
            </param>
            <returns>
            <see langword="true"/> if this set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.DictionarySet.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements in the <see cref="T:YCH.Collections.ISet"/> to
            an array.
            </summary>
            <remarks>
            <p>
            The type of array needs to be compatible with the objects in the
            <see cref="T:YCH.Collections.ISet"/>, obviously.
            </p>
            </remarks>
            <param name="array">
            An array that will be the target of the copy operation.
            </param>
            <param name="index">
            The zero-based index where copying will start.
            </param>
        </member>
        <member name="M:YCH.Collections.DictionarySet.GetEnumerator">
            <summary>
            Gets an enumerator for the elements in the
            <see cref="T:YCH.Collections.ISet"/>.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> over the elements
            in the <see cref="T:YCH.Collections.ISet"/>.
            </returns>
        </member>
        <member name="P:YCH.Collections.DictionarySet.InternalDictionary">
            <summary>
            Provides the storage for elements in the
            <see cref="T:YCH.Collections.ISet"/>, stored as the key-set
            of the <see cref="T:System.Collections.IDictionary"/> object.  
            </summary>
            <remarks>
            <p>
            Set this object in the constructor if you create your own
            <see cref="T:YCH.Collections.ISet"/> class.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Collections.DictionarySet.Placeholder">
            <summary>
            The placeholder object used as the value for the
            <see cref="T:System.Collections.IDictionary"/> instance.
            </summary>
            <remarks>
            There is a single instance of this object globally, used for all
            <see cref="T:YCH.Collections.ISet"/>s.
            </remarks>
        </member>
        <member name="P:YCH.Collections.DictionarySet.IsEmpty">
            <summary>
            Returns <see langword="true"/> if this set contains no elements.
            </summary>
        </member>
        <member name="P:YCH.Collections.DictionarySet.Count">
            <summary>
            The number of elements currently contained in this collection.
            </summary>
        </member>
        <member name="P:YCH.Collections.DictionarySet.IsSynchronized">
            <summary>
            Returns <see langword="true"/> if the
            <see cref="T:YCH.Collections.ISet"/> is synchronized across
            threads.
            </summary>
            <seealso cref="P:YCH.Collections.Set.IsSynchronized"/>
        </member>
        <member name="P:YCH.Collections.DictionarySet.SyncRoot">
            <summary>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </summary>
            <value>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </value>
            <seealso cref="P:YCH.Collections.Set.SyncRoot"/>
        </member>
        <member name="T:YCH.Collections.HashedSet">
            <summary>
            Implements an <see cref="T:YCH.Collections.ISet"/> based on a
            hash table.
            </summary>
            <remarks>
            <p>
            This will give the best lookup, add, and remove performance for very
            large data-sets, but iteration will occur in no particular order.
            </p>
            </remarks>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: HashedSet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.HashedSet.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Collections.HashedSet"/> class.
            </summary>
        </member>
        <member name="M:YCH.Collections.HashedSet.#ctor(System.Collections.ICollection)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Collections.HashedSet"/> class, and
            initializes it based on a collection of elements.
            </summary>
            <param name="initialValues">
            A collection of elements that defines the initial set contents.
            </param>
        </member>
        <member name="T:YCH.Collections.HybridSet">
            <summary>
            Implements an <see cref="T:YCH.Collections.ISet"/> that automatically
            changes from a list based implementation to a hashtable based
            implementation when the size reaches a certain threshold.
            </summary>
            <remarks>
            <p>
            This is good if you are unsure about whether you data-set will be tiny
            or huge.
            </p>
            <note>
            Because this uses a dual implementation, iteration order is <b>not</b>
            guaranteed!
            </note>
            </remarks>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: HybridSet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.HybridSet.#ctor">
            <summary>
            Creates a new set instance based on either a list or a hash table,
            depending on which will be more efficient based on the data-set
            size.
            </summary>
        </member>
        <member name="M:YCH.Collections.HybridSet.#ctor(System.Collections.ICollection)">
            <summary>
            Creates a new set instance based on either a list or a hash table,
            depending on which will be more efficient based on the data-set
            size, and initializes it based on a collection of elements.
            </summary>
            <param name="initialValues">
            A collection of elements that defines the initial set contents.
            </param>
        </member>
        <member name="T:YCH.Collections.ImmutableSet">
            <summary>
            Implements an immutable (read-only)
            <see cref="T:YCH.Collections.ISet"/> wrapper.
            </summary>
            <remarks>
            <p>
            Although this class is advertised as immutable, it really isn't.
            Anyone with access to the wrapped <see cref="T:YCH.Collections.ISet"/>
            can still change the data. So <see cref="M:System.Object.GetHashCode"/>
            is not implemented for this <see cref="T:YCH.Collections.ISet"/>, as
            is the case for all <see cref="T:YCH.Collections.ISet"/>
            implementations in this library. This design decision was based on the
            efficiency of not having to <b>clone</b> the wrapped
            <see cref="T:YCH.Collections.ISet"/> every time you wrap a mutable
            <see cref="T:YCH.Collections.ISet"/>.
            </p>
            </remarks>
            <version>$Id: ImmutableSet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.#ctor(YCH.Collections.ISet)">
            <summary>
            Constructs an immutable (read-only)
            <see cref="T:YCH.Collections.ISet"/> wrapper.
            </summary>
            <param name="basisSet">
            The <see cref="T:YCH.Collections.ISet"/> that is to be wrapped.
            </param>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Add(System.Object)">
            <summary>
            Adds the specified element to this set if it is not already present.
            </summary>
            <param name="element">The object to add to the set.</param>
            <returns>
            <see langword="true"/> is the object was added,
            <see langword="true"/> if the object was already present.
            </returns>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.AddAll(System.Collections.ICollection)">
            <summary>
            Adds all the elements in the specified collection to the set if
            they are not already present.
            </summary>
            <param name="collection">A collection of objects to add to the set.</param>
            <returns>
            <see langword="true"/> is the set changed as a result of this
            operation.
            </returns>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Clear">
            <summary>
            Removes all objects from this set.
            </summary>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this set contains the specified
            element.
            </summary>
            <param name="element">The element to look for.</param>
            <returns>
            <see langword="true"/> if this set contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.ContainsAll(System.Collections.ICollection)">
            <summary>
            Returns <see langword="true"/> if the set contains all the
            elements in the specified collection.
            </summary>
            <param name="collection">A collection of objects.</param>
            <returns>
            <see langword="true"/> if the set contains all the elements in the
            specified collection.
            </returns>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Remove(System.Object)">
            <summary>
            Removes the specified element from the set.
            </summary>
            <param name="element">The element to be removed.</param>
            <returns>
            <see langword="true"/> if the set contained the specified element.
            </returns>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.RemoveAll(System.Collections.ICollection)">
            <summary>
            Remove all the specified elements from this set, if they exist in
            this set.
            </summary>
            <param name="collection">A collection of elements to remove.</param>
            <returns>
            <see langword="true"/> if the set was modified as a result of this
            operation.
            </returns>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.RetainAll(System.Collections.ICollection)">
            <summary>
            Retains only the elements in this set that are contained in the
            specified collection.
            </summary>
            <param name="collection">
            The collection that defines the set of elements to be retained.
            </param>
            <returns>
            <see langword="true"/> if this set changed as a result of this
            operation.
            </returns>
            <exception cref="T:System.NotSupportedException"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements in the <see cref="T:YCH.Collections.ISet"/> to
            an array.
            </summary>
            <remarks>
            <p>
            The type of array needs to be compatible with the objects in the
            <see cref="T:YCH.Collections.ISet"/>, obviously.
            </p>
            </remarks>
            <param name="array">
            An array that will be the target of the copy operation.
            </param>
            <param name="index">
            The zero-based index where copying will start.
            </param>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.GetEnumerator">
            <summary>
            Gets an enumerator for the elements in the
            <see cref="T:YCH.Collections.ISet"/>.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> over the elements
            in the <see cref="T:YCH.Collections.ISet"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Clone">
            <summary>
            Returns a clone of the <see cref="T:YCH.Collections.ISet"/>
            instance.
            </summary>
            <returns>A clone of this object.</returns>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Union(YCH.Collections.ISet)">
            <summary>
            Performs a "union" of the two sets, where all the elements
            in both sets are present. 
            </summary>
            <param name="setOne">A collection of elements.</param>
            <returns>
            A new <see cref="T:YCH.Collections.ISet"/> containing the union of
            this <see cref="T:YCH.Collections.ISet"/> with the specified
            collection. Neither of the input objects is modified by the union.
            </returns>
            <see cref="M:YCH.Collections.ISet.Union(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Intersect(YCH.Collections.ISet)">
            <summary>
            Performs an "intersection" of the two sets, where only the elements
            that are present in both sets remain.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            The intersection of this set with <paramref name="setOne"/>.
            </returns>
            <see cref="M:YCH.Collections.ISet.Intersect(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.Minus(YCH.Collections.ISet)">
            <summary>
            Performs a "minus" of this set from the <paramref name="setOne"/>
            set.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the elements from this set with the elements in
            <paramref name="setOne"/> removed.
            </returns>
            <seealso cref="M:YCH.Collections.ISet.Minus(YCH.Collections.ISet)"/>
        </member>
        <member name="M:YCH.Collections.ImmutableSet.ExclusiveOr(YCH.Collections.ISet)">
            <summary>
            Performs an "exclusive-or" of the two sets, keeping only those
            elements that are in one of the sets, but not in both.
            </summary>
            <param name="setOne">A set of elements.</param>
            <returns>
            A set containing the result of
            <c><paramref name="setOne"/> ^ this</c>.
            </returns>
            <seealso cref="M:YCH.Collections.ISet.ExclusiveOr(YCH.Collections.ISet)"/>
        </member>
        <member name="P:YCH.Collections.ImmutableSet.IsEmpty">
            <summary>
            Returns <see langword="true"/> if this set contains no elements.
            </summary>
        </member>
        <member name="P:YCH.Collections.ImmutableSet.Count">
            <summary>
            The number of elements currently contained in this collection.
            </summary>
        </member>
        <member name="P:YCH.Collections.ImmutableSet.IsSynchronized">
            <summary>
            Returns <see langword="true"/> if the
            <see cref="T:YCH.Collections.ISet"/> is synchronized across
            threads.
            </summary>
            <remarks>
            <p>
            Note that enumeration is inherently not thread-safe. Use the
            <see cref="P:YCH.Collections.ImmutableSet.SyncRoot"/> to lock the object during enumeration.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Collections.ImmutableSet.SyncRoot">
            <summary>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </summary>
            <value>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </value>
        </member>
        <member name="T:YCH.Collections.LinkedList">
            <summary>
            Simple linked list implementation.
            </summary>
            <author>Simon White</author>
            <version>$Id: LinkedList.cs,v 1.8 2006/04/22 00:01:23 bbaia Exp $</version>
        </member>
        <member name="M:YCH.Collections.LinkedList.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.LinkedList"/> class.
            </summary>
        </member>
        <member name="M:YCH.Collections.LinkedList.#ctor(System.Collections.IList)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.LinkedList"/> class that contains all
             elements of the specified list.
            </summary>
            <param name="list">
            A list of elements that defines the initial contents.
            </param>
        </member>
        <member name="M:YCH.Collections.LinkedList.RemoveAt(System.Int32)">
            <summary>
            Removes the object at the specified index.
            </summary>
            <param name="index">The lookup index.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the specified <paramref name="index"/> is greater than the
            number of objects within the list.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.Insert(System.Int32,System.Object)">
            <summary>
            Inserts an object at the specified index.
            </summary>
            <param name="index">The lookup index.</param>
            <param name="value">The object to be inserted.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the specified <paramref name="index"/> is greater than the
            number of objects within the list.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.Remove(System.Object)">
            <summary>
            Removes the first instance of the specified object found.
            </summary>
            <param name="value">The object to remove</param>
        </member>
        <member name="M:YCH.Collections.LinkedList.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this list contains the specified
            element.
            </summary>
            <param name="value">The element to look for.</param>
            <returns>
            <see langword="true"/> if this list contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.LinkedList.Clear">
            <summary>
            Removes all objects from the list.
            </summary>
        </member>
        <member name="M:YCH.Collections.LinkedList.IndexOf(System.Object)">
            <summary>
            Returns the index of the first instance of the specified
            <paramref name="value"/> found.
            </summary>
            <param name="value">The object to search for</param>
            <returns>
            The index of the first instance found, or -1 if the element was not
            found.
            </returns>
        </member>
        <member name="M:YCH.Collections.LinkedList.Add(System.Object)">
            <summary>
            Adds the specified object to the end of the list.
            </summary>
            <param name="value">The object to add</param>
            <returns>The index that the object was added at.</returns>
        </member>
        <member name="M:YCH.Collections.LinkedList.AddAll(System.Collections.IList)">
            <summary>
            Adds all of the elements of the supplied
            <paramref name="elements"/>list to the end of this list.
            </summary>
            <param name="elements">The list of objects to add.</param>
        </member>
        <member name="M:YCH.Collections.LinkedList.CheckUpdateState">
            <summary>
            Checks whether the list can be modified.
            </summary>
            <exception cref="T:System.NotSupportedException">
            If the list cannot be modified.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.ValidateIndex(System.Int32)">
            <summary>
            Validates the specified index.
            </summary>
            <param name="index">The lookup index.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the index is invalid.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.GetNode(System.Int32)">
            <summary>
            Returns the node at the specified index.
            </summary>
            <param name="index">The lookup index.</param>
            <returns>The node at the specified index.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the specified <paramref name="index"/> is greater than the
            number of objects within the list.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.GetNode(System.Object)">
            <summary>
            Returns the node (and index) of the first node that contains
            the specified value.
            </summary>
            <param name="value">The value to search for.</param>
            <returns>
            The node, or <see langword="null"/> if not found.
            </returns>
        </member>
        <member name="M:YCH.Collections.LinkedList.RemoveNode(YCH.Collections.LinkedList.Node)">
            <summary>
            Removes the specified node.
            </summary>
            <param name="node">The node to be removed.</param>
        </member>
        <member name="M:YCH.Collections.LinkedList.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements in this list to an array.
            </summary>
            <remarks>
            <p>
            The type of array needs to be compatible with the objects in this
            list, obviously.
            </p>
            </remarks>
            <param name="array">
            An array that will be the target of the copy operation.
            </param>
            <param name="index">
            The zero-based index where copying will start.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="array"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the supplied <paramref name="index"/> is less than zero
            or is greater than the length of <paramref name="array"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="array"/> is of insufficient size.
            </exception>
        </member>
        <member name="M:YCH.Collections.LinkedList.GetEnumerator">
            <summary>
            Gets an enumerator for the elements in the
            <see cref="T:YCH.Collections.LinkedList"/>.
            </summary>
            <remarks>
            <p>
            Enumerators are fail fast.
            </p>
            </remarks>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> over the elements
            in the <see cref="T:YCH.Collections.LinkedList"/>.
            </returns>
        </member>
        <member name="P:YCH.Collections.LinkedList.IsReadOnly">
            <summary>
            Is list read only?
            </summary>
            <value>
            <see langword="true"/> if the list is read only.
            </value>
        </member>
        <member name="P:YCH.Collections.LinkedList.Item(System.Int32)">
            <summary>
            Returns the node at the specified index.
            </summary>
            <remarks>
            <p>
            This is the indexer for the
            <see cref="T:YCH.Collections.LinkedList"/> class.
            </p>
            </remarks>
            <seealso cref="M:YCH.Collections.LinkedList.GetNode(System.Int32)"/>
        </member>
        <member name="P:YCH.Collections.LinkedList.IsFixedSize">
            <summary>
            Is the list a fixed size?
            </summary>
            <value>
            <see langword="true"/> if the list is a fixed size list.
            </value>
        </member>
        <member name="P:YCH.Collections.LinkedList.IsSynchronized">
            <summary>
            Returns <see langword="true"/> if the list is synchronized across
            threads.
            </summary>
            <remarks>
            <note>
            This implementation <b>always</b> returns <see langword="false"/>.
            </note>
            <p>
            Note that enumeration is inherently not thread-safe. Use the
            <see cref="P:YCH.Collections.LinkedList.SyncRoot"/> to lock the object during enumeration.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Collections.LinkedList.Count">
            <summary>
            The number of objects within the list.
            </summary>
        </member>
        <member name="P:YCH.Collections.LinkedList.SyncRoot">
            <summary>
            An object that can be used to synchronize this
            <see cref="T:YCH.Collections.LinkedList"/> to make it thread-safe.
            </summary>
            <value>
            An object that can be used to synchronize this
            <see cref="T:YCH.Collections.LinkedList"/> to make it thread-safe.
            </value>
        </member>
        <member name="T:YCH.Collections.ListSet">
            <summary>
            Implements a <see cref="T:YCH.Collections.ISet"/> based on a list.
            </summary>
            <remarks>
            <p>
            Performance is much better for very small lists than either
            <see cref="T:YCH.Collections.HashedSet"/> or <see cref="T:YCH.Collections.SortedSet"/>.
            However, performance degrades rapidly as the data-set gets bigger. Use a
            <see cref="T:YCH.Collections.HybridSet"/> instead if you are not sure your data-set
            will always remain very small. Iteration produces elements in the order they were added.
            However, element order is not guaranteed to be maintained by the various
            <see cref="T:YCH.Collections.ISet"/> mathematical operators.  
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Collections.ListSet.#ctor">
            <summary>
            Creates a new set instance based on a list.
            </summary>
        </member>
        <member name="M:YCH.Collections.ListSet.#ctor(System.Collections.ICollection)">
            <summary>
            Creates a new set instance based on a list and initializes it based on a
            collection of elements.
            </summary>
            <param name="initialValues">
            A collection of elements that defines the initial set contents.
            </param>
        </member>
        <member name="T:YCH.Collections.NoElementsException">
            <summary>
            Thrown when an element is requested from an empty <see cref="T:YCH.Collections.IQueue"/>.
            </summary>
            <author>Griffin Caprio</author>
            <version>$Id: NoElementsException.cs,v 1.4 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.NoElementsException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.NoElementsException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Collections.NoElementsException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.NoElementsException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Collections.NoElementsException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.NoElementsException"/> class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Collections.NoElementsException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Collections.NoElementsException"/> class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="T:YCH.Collections.PriorityQueue">
            <summary> 
            An unbounded priority <see cref="T:YCH.Collections.IQueue"/> based on a priority
            heap.  This queue orders elements according to an order specified
            at construction time, which is specified either according to their
            <i>natural order</i> (see <see cref="T:System.IComparable"/>, or according to a
            <see cref="T:System.Collections.IComparer"/>, depending on which constructor is
            used. A priority queue does not permit <see lang="null"/> elements.
            A priority queue relying on natural ordering also does not
            permit insertion of non-comparable objects (doing so will result
            <see cref="T:System.InvalidCastException"/>.
            
            <p/>
            The <i>head</i> of this queue is the <i>lowest</i> element
            with respect to the specified ordering.  If multiple elements are
            tied for lowest value, the head is one of those elements -- ties are
            broken arbitrarily. 
            
            <p/>
            A priority queue is unbounded, but has an internal
            <i>capacity</i> governing the size of an array used to store the
            elements on the queue.  It is always at least as large as the queue
            size.  As elements are added to a priority queue, its capacity
            grows automatically.  The details of the growth policy are not
            specified.
            
            <p/>
            This class and its enumerator implement all of the
            <i>optional</i> methods of the <see cref="T:System.Collections.ICollection"/> and
            <see cref="T:System.Collections.IEnumerator"/> interfaces.
            The enumerator provided in method <see cref="M:System.Collections.IEnumerable.GetEnumerator"/> 
            is <b>not</b> guaranteed to traverse the elements of the PriorityQueue in any
            particular order.
            
            <p/> 
            Note that this implementation is <b>NOT</b> synchronized.
            Multiple threads should not access a <see cref="T:YCH.Collections.PriorityQueue"/>
            instance concurrently if any of the threads modifies the list
            structurally. Instead, use the thread-safe PriorityBlockingQueue.
            </summary>
            <author>Josh Bloch</author>
            <author>Griffin Caprio (.NET)</author>
        </member>
        <member name="F:YCH.Collections.PriorityQueue._queue">
            <summary> 
            Priority queue represented as a balanced binary heap: the two children
            of queue[n] are queue[2*n] and queue[2*n + 1].  The priority queue is
            ordered by comparator, or by the elements' natural ordering, if
            comparator is null:  For each node n in the heap and each descendant d
            of n, n &lt;= d.
            
            The element with the lowest value is in queue[1], assuming the queue is
            nonempty.  (A one-based array is used in preference to the traditional
            zero-based array to simplify parent and child calculations.)
            
            queue.length must be >= 2, even if size == 0.
            </summary>
        </member>
        <member name="F:YCH.Collections.PriorityQueue._priorityQueueSize">
            <summary> The number of elements in the priority queue.</summary>
        </member>
        <member name="F:YCH.Collections.PriorityQueue._comparator">
            <summary> 
            The comparator, or null if priority queue uses elements'
            natural ordering.
            </summary>
        </member>
        <member name="F:YCH.Collections.PriorityQueue._queueModificationCount">
            <summary> 
            The number of times this priority queue has been
            <i>structurally modified</i>.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.#ctor">
            <summary>
            Creates a <see cref="T:YCH.Collections.PriorityQueue"/> with the default initial capacity
            (11) that orders its elements according to their natural
            ordering (using <see cref="T:System.IComparable"/>).
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.#ctor(System.Int32)">
            <summary> 
            Creates a <see cref="T:YCH.Collections.PriorityQueue"/> with the specified initial capacity
            that orders its elements according to their natural ordering
            (using <see cref="T:System.IComparable"/>).
            </summary>
            <param name="initialCapacity">the initial capacity for this priority queue.
            </param>
            <exception cref="T:System.ArgumentException">if <paramref name="initialCapacity"/> is less than 1.</exception>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.#ctor(System.Int32,System.Collections.IComparer)">
            <summary> 
            Creates a <see cref="T:YCH.Collections.PriorityQueue"/> with the specified initial capacity
            that orders its elements according to the specified comparator.
            </summary>
            <param name="initialCapacity">the initial capacity for this priority queue.</param>
            <param name="comparator">the comparator used to order this priority queue.
            If <see lang="null"/> then the order depends on the elements' natural ordering.
            </param>
            <exception cref="T:System.ArgumentException">if <paramref name="initialCapacity"/> is less than 1.</exception>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.#ctor(System.Collections.ICollection)">
            <summary> 
            Creates a <see cref="T:YCH.Collections.PriorityQueue"/> containing the elements in the
            specified collection.  The priority queue has an initial
            capacity of 110% of the size of the specified collection or 1
            if the collection is empty.  If the specified collection is an
            instance of a <see cref="T:YCH.Collections.PriorityQueue"/>, the priority queue will be sorted
            according to the same comparator, or according to its elements'
            natural order if the collection is sorted according to its
            elements' natural order.  Otherwise, the priority queue is
            ordered according to its elements' natural order.
            </summary>
            <param name="collection">the collection whose elements are to be placed into this priority queue.</param>
            <exception cref="T:System.InvalidCastException">if elements of <paramref name="collection"/> cannot be 
            compared to one another according to the priority queue's ordering</exception>
            <exception cref="T:System.ArgumentNullException">if <paramref name="collection"/> or any element with it is
            <see lang="null"/>
            </exception>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.initializeArray(System.Collections.ICollection)">
            <summary> 
            Common code to initialize underlying queue array across
            constructors below.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.urShift(System.Int32,System.Int32)">
            <summary>
            Performs an unsigned bitwise right shift with the specified number
            </summary>
            <param name="number">Number to operate on</param>
            <param name="bits">Ammount of bits to shift</param>
            <returns>The resulting number from the shift operation</returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.fixUp(System.Int32)">
            <summary> 
            Establishes the heap invariant assuming the heap
            satisfies the invariant except possibly for the leaf-node indexed by k
            (which may have a nextExecutionTime less than its parent's).
            </summary>
            <remarks>
            This method functions by "promoting" queue[k] up the hierarchy
            (by swapping it with its parent) repeatedly until queue[k]
            is greater than or equal to its parent.
            </remarks>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.fixDown(System.Int32)">
            <summary> 
            Establishes the heap invariant (described above) in the subtree
            rooted at k, which is assumed to satisfy the heap invariant except
            possibly for node k itself (which may be greater than its children).
            </summary>
            <remarks>
            This method functions by "demoting" queue[k] down the hierarchy
            (by swapping it with its smaller child) repeatedly until queue[k]
            is less than or equal to its children.
            </remarks>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.heapify">
            <summary> 
            Establishes the heap invariant in the entire tree,
            assuming nothing about the order of the elements prior to the call.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.getQueueSizeBasedOnPercentage(System.Int32,System.Int64)">
            <summary>
            Returns the <paramref name="percentage"/> of <paramref name="size"/> or <see cref="F:System.Int32.MaxValue"/> - 1,
            whichever is smaller. 
            </summary>
            <param name="size">base size</param>
            <param name="percentage">percentage to return</param>
            <returns><paramref name="percentage"/> of <paramref name="size"/></returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.fillFromSorted(System.Collections.ICollection)">
            <summary> 
            Initially fill elements of the queue array under the
            knowledge that it is sorted or is another <see cref="T:YCH.Collections.PriorityQueue"/>, in which
            case we can just place the elements in the order presented.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.fillFromUnsorted(System.Collections.ICollection)">
            <summary> 
            Initially fill elements of the queue array that is not to our knowledge
            sorted, so we must rearrange the elements to guarantee the heap
            invariant.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.removeAt(System.Int32)">
            <summary> 
            Removes and returns element located at <paramref name="index"/> from queue.  (Recall that the queue
            is one-based, so 1 &lt;= i &lt;= size.)
            </summary>
            <remarks>
            Normally this method leaves the elements at positions from 1 up to i-1,
            inclusive, untouched.  Under these circumstances, it returns <see lang="null"/>.
            Occasionally, in order to maintain the heap invariant, it must move
            the last element of the list to some index in the range [2, i-1],
            and move the element previously at position (i/2) to position i.
            Under these circumstances, this method returns the element that was
            previously at the end of the list and is now at some position between
            2 and i-1 inclusive.
            </remarks>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.grow(System.Int32)">
            <summary> Resize array, if necessary, to be able to hold given index</summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Offer(System.Object)">
            <summary> 
            Inserts the specified element into this queue if it is possible to do
            so immediately without violating capacity restrictions.
            </summary>
            <remarks>
            <p>
            When using a capacity-restricted queue, this method is generally
            preferable to <see cref="M:YCH.Collections.IQueue.Add(System.Object)"/>,
            which can fail to insert an element only by throwing an exception.
            </p>
            </remarks>
            <param name="objectToAdd">
            The element to add.
            </param>
            <returns>
            <see lang="true"/> if the element was added to this queue.
            </returns>
            <exception cref="T:System.InvalidCastException">
            if the specified element cannot be compared
            with elements currently in the priority queue according
            to the priority queue's ordering.
            </exception>
            <exception cref="T:System.InvalidOperationException">
            If the element cannot be added at this time due to capacity restrictions.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="objectToAdd"/> is
            <see lang="null"/> and this queue does not permit <see lang="null"/>
            elements.
            </exception>
            <exception cref="T:System.ArgumentException">
            If some property of the supplied <paramref name="objectToAdd"/> prevents
            it from being added to this queue.
            </exception>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Peek">
            <summary> 
            Retrieves, but does not remove, the head of this queue,
            or returns <see lang="null"/> if this queue is empty.
            </summary>
            <returns> 
            The head of this queue, or <see lang="null"/> if this queue is empty.
            </returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Add(System.Object)">
            <summary> 
            Inserts the specified element into this queue if it is possible to do so
            immediately without violating capacity restrictions, returning
            <see lang="true"/> upon success and throwing an
            <see cref="T:System.InvalidOperationException"/> if no space is
            currently available.
            </summary>
            <param name="objectToAdd">
            The element to add.
            </param>
            <returns> 
            <see lang="true"/> if successful.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            If the element cannot be added at this time due to capacity restrictions.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the specified element is <see lang="null"/> and this queue does not
            permit <see lang="null"/> elements.
            </exception>
            <exception cref="T:System.ArgumentException">
            If some property of the supplied <paramref name="objectToAdd"/> prevents
            it from being added to this queue.
            </exception>
            <exception cref="T:System.InvalidCastException">
            if the specified element cannot be compared
            with elements currently in the priority queue according
            to the priority queue's ordering.
            </exception>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Remove(System.Object)">
            <summary> 
            Removes a single instance of the specified element from this
            queue, if it is present.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.GetEnumerator">
            <summary> 
            Returns an <see cref="T:System.Collections.IEnumerator"/> over the elements in this queue. 
            The enumeratoar does not return the elements in any particular order.
            </summary>
            <returns> an enumerator over the elements in this queue.</returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Clear">
            <summary> 
            Removes all elements from the priority queue.
            The queue will be empty after this call returns.
            </summary>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Poll">
            <summary> 
            Retrieves and removes the head of this queue,
            or returns <see lang="null"/> if this queue is empty.
            </summary>
            <returns> 
            The head of this queue, or <see lang="null"/> if this queue is empty.
            </returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Contains(System.Object)">
            <summary>
            Queries the queue to see if it contains the specified <pararef name="element"/>
            </summary>
            <param name="element">element to look for.</param>
            <returns><see lang="true"/> if the queue contains the <pararef name="element"/>, 
            <see lang="false"/> otherwise.</returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.Comparator">
            <summary> Returns the comparator used to order this collection, or <see lang="null"/>
            if this collection is sorted according to its elements natural ordering
            (using <see cref="T:System.IComparable"/>).
            
            </summary>
            <returns> the comparator used to order this collection, or <see lang="null"/>
            if this collection is sorted according to its elements natural ordering.
            </returns>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary> 
            Save the state of the instance to a stream (that
            is, serialize it).
            </summary>
            <serialData> The length of the array backing the instance is
            emitted (int), followed by all of its elements (each an
            <see cref="T:System.Object"/>) in the proper order.
            </serialData>
            <param name="serializationInfo">the stream</param>
            <param name="context">the context</param>
        </member>
        <member name="M:YCH.Collections.PriorityQueue.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary> 
            Reconstitute the <see cref="T:YCH.Collections.PriorityQueue"/> instance from a stream (that is,
            deserialize it).
            </summary>
            <param name="serializationInfo">the stream</param>
            <param name="context">the context</param>
        </member>
        <member name="P:YCH.Collections.PriorityQueue.Capacity">
            <summary>
            Gets the Capacity of this queue.  Will equal <see cref="P:System.Collections.ICollection.Count"/>
            </summary>
        </member>
        <member name="P:YCH.Collections.PriorityQueue.Count">
            <summary>
            Returns the queue count.
            </summary>
        </member>
        <member name="F:YCH.Collections.PriorityQueue.PriorityQueueEnumerator._cursorIndex">
            <summary> 
            Index (into queue array) of element to be returned by subsequent call to next.
            </summary>
        </member>
        <member name="T:YCH.Collections.SortedSet">
            <summary>
            Implements an <see cref="T:YCH.Collections.ISet"/> based on a sorted
            tree.
            </summary>
            <remarks>
            <p>
            This gives good performance for operations on very large data-sets,
            though not as good - asymptotically - as a
            <see cref="T:YCH.Collections.HashedSet"/>. However, iteration occurs
            in order.
            </p>
            <p>
            Elements that you put into this type of collection must implement
            <see cref="T:System.IComparable"/>, and they must actually be comparable.
            You can't mix <see cref="T:System.String"/> and
            <see cref="T:System.Int32"/> values, for example.
            </p>
            <p>
            This <see cref="T:YCH.Collections.ISet"/> implementation does
            <b>not</b> support elements that are <see langword="null"/>.
            </p>
            </remarks>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: SortedSet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.SortedSet.#ctor">
            <summary>
            Creates a new set instance based on a sorted tree.
            </summary>
        </member>
        <member name="M:YCH.Collections.SortedSet.#ctor(System.Collections.ICollection)">
            <summary>
            Creates a new set instance based on a sorted tree and initializes
            it based on a collection of elements.
            </summary>
            <param name="initialValues">
            A collection of elements that defines the initial set contents.
            </param>
        </member>
        <member name="T:YCH.Collections.SynchronizedDictionaryEnumerator">
            <summary>
            Synchronized <see cref="T:System.Collections.IDictionaryEnumerator"/> that should be returned by synchronized
            dictionary implementations in order to ensure that the enumeration is thread safe.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: SynchronizedDictionaryEnumerator.cs,v 1.1 2006/05/03 01:13:41 aseovic Exp $</version>
        </member>
        <member name="T:YCH.Collections.SynchronizedEnumerator">
            <summary>
            Synchronized <see cref="T:System.Collections.IEnumerator"/> that should be returned by synchronized
            collections in order to ensure that the enumeration is thread safe.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: SynchronizedEnumerator.cs,v 1.1 2006/05/03 01:13:41 aseovic Exp $</version>
        </member>
        <member name="T:YCH.Collections.SynchronizedHashtable">
            <summary>
            Synchronized <see cref="T:System.Collections.Hashtable"/> that, unlike hashtable created
            using <see cref="M:System.Collections.Hashtable.Synchronized(System.Collections.Hashtable)"/> method, synchronizes 
            reads from the underlying hashtable in addition to writes.
            </summary>
            <remarks>
            <p>
            In addition to synchronizing reads, this implementation also fixes
            IEnumerator/ICollection issue described at 
            http://msdn.microsoft.com/netframework/programming/breakingchanges/runtime/clr.aspx
            (search for SynchronizedHashtable for issue description), by implementing 
            <see cref="T:System.Collections.IEnumerator"/> interface explicitly, and returns thread safe enumerator
            implementations as well.
            </p>
            <p>
            This class should be used whenever a truly synchronized <see cref="T:System.Collections.Hashtable"/>
            is needed.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: SynchronizedHashtable.cs,v 1.1 2006/05/03 01:13:41 aseovic Exp $</version>
        </member>
        <member name="T:YCH.Collections.SynchronizedSet">
            <summary>
            Implements a thread-safe <see cref="T:YCH.Collections.ISet"/> wrapper.
            </summary>
            <remarks>
            <p>
            The implementation is extremely conservative, serializing critical
            sections to prevent possible deadlocks, and locking on everything. The
            one exception is for enumeration, which is inherently not thread-safe.
            For this, you have to <c>lock</c> the <c>SyncRoot</c> object for the
            duration of the enumeration.
            </p>
            </remarks>
            <seealso cref="T:YCH.Collections.ISet"/>
            <version>$Id: SynchronizedSet.cs,v 1.5 2006/04/09 07:18:37 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.#ctor(YCH.Collections.ISet)">
            <summary>
            Constructs a thread-safe <see cref="T:YCH.Collections.ISet"/>
            wrapper.
            </summary>
            <param name="basisSet">
            The <see cref="T:YCH.Collections.ISet"/> object that this object
            will wrap.
            </param>
            <exception cref="T:System.NullReferenceException">
            If the supplied <paramref name="basisSet"/> ecposes a
            <see langword="null"/> <c>SyncRoot</c> value.
            </exception>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.Add(System.Object)">
            <summary>
            Adds the specified element to this set if it is not already present.
            </summary>
            <param name="element">The object to add to the set.</param>
            <returns>
            <see langword="true"/> is the object was added,
            <see langword="true"/> if the object was already present.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.AddAll(System.Collections.ICollection)">
            <summary>
            Adds all the elements in the specified collection to the set if
            they are not already present.
            </summary>
            <param name="collection">A collection of objects to add to the set.</param>
            <returns>
            <see langword="true"/> is the set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.Clear">
            <summary>
            Removes all objects from this set.
            </summary>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.Contains(System.Object)">
            <summary>
            Returns <see langword="true"/> if this set contains the specified
            element.
            </summary>
            <param name="element">The element to look for.</param>
            <returns>
            <see langword="true"/> if this set contains the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.ContainsAll(System.Collections.ICollection)">
            <summary>
            Returns <see langword="true"/> if the set contains all the
            elements in the specified collection.
            </summary>
            <param name="collection">A collection of objects.</param>
            <returns>
            <see langword="true"/> if the set contains all the elements in the
            specified collection; also <see langword="false"/> if the
            supplied <paramref name="collection"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.Remove(System.Object)">
            <summary>
            Removes the specified element from the set.
            </summary>
            <param name="element">The element to be removed.</param>
            <returns>
            <see langword="true"/> if the set contained the specified element.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.RemoveAll(System.Collections.ICollection)">
            <summary>
            Remove all the specified elements from this set, if they exist in
            this set.
            </summary>
            <param name="collection">A collection of elements to remove.</param>
            <returns>
            <see langword="true"/> if the set was modified as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.RetainAll(System.Collections.ICollection)">
            <summary>
            Retains only the elements in this set that are contained in the
            specified collection.
            </summary>
            <param name="c">
            The collection that defines the set of elements to be retained.
            </param>
            <returns>
            <see langword="true"/> if this set changed as a result of this
            operation.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements in the <see cref="T:YCH.Collections.ISet"/> to
            an array.
            </summary>
            <remarks>
            <p>
            The type of array needs to be compatible with the objects in the
            <see cref="T:YCH.Collections.ISet"/>, obviously.
            </p>
            </remarks>
            <param name="array">
            An array that will be the target of the copy operation.
            </param>
            <param name="index">
            The zero-based index where copying will start.
            </param>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.GetEnumerator">
            <summary>
            Gets an enumerator for the elements in the
            <see cref="T:YCH.Collections.ISet"/>.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> over the elements
            in the <see cref="T:YCH.Collections.ISet"/>.
            </returns>
        </member>
        <member name="M:YCH.Collections.SynchronizedSet.Clone">
            <summary>
            Returns a clone of the <see cref="T:YCH.Collections.ISet"/> instance.  
            </summary>
            <returns>A clone of this object.</returns>
        </member>
        <member name="P:YCH.Collections.SynchronizedSet.IsEmpty">
            <summary>
            Returns <see langword="true"/> if this set contains no elements.
            </summary>
        </member>
        <member name="P:YCH.Collections.SynchronizedSet.Count">
            <summary>
            The number of elements currently contained in this collection.
            </summary>
        </member>
        <member name="P:YCH.Collections.SynchronizedSet.IsSynchronized">
            <summary>
            Returns <see langword="true"/> if the
            <see cref="T:YCH.Collections.ISet"/> is synchronized across
            threads.
            </summary>
            <seealso cref="P:YCH.Collections.Set.IsSynchronized"/>
        </member>
        <member name="P:YCH.Collections.SynchronizedSet.SyncRoot">
            <summary>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </summary>
            <value>
            An object that can be used to synchronize this collection to make
            it thread-safe.
            </value>
            <seealso cref="P:YCH.Collections.Set.SyncRoot"/>
        </member>
        <member name="T:YCH.Context.Events.ConsoleListener">
            <summary>
            Simple listener that logs application events to the console.
            </summary>
            <remarks>
            <p>
            Intended for use during debugging only.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: ConsoleListener.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.IApplicationEventListener"/>
        </member>
        <member name="T:YCH.Context.IApplicationEventListener">
            <summary>
            A listener for application events.
            </summary>
            <author>Rod Johnson</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: IApplicationEventListener.cs,v 1.2 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.IApplicationEventListener.HandleApplicationEvent(System.Object,YCH.Context.ApplicationEventArgs)">
            <summary>
            Handle an application event.
            </summary>
            <param name="sender">
            The source of the event.
            </param>
            <param name="e">
            The event that is to be handled.
            </param>
        </member>
        <member name="M:YCH.Context.Events.ConsoleListener.#ctor">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Context.Events.ConsoleListener"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Events.ConsoleListener.HandleApplicationEvent(System.Object,YCH.Context.ApplicationEventArgs)">
            <summary>
            Handle an application event.
            </summary>
            <param name="sender">
            The source of the event.
            </param>
            <param name="e">
            The event that is to be handled.
            </param>
        </member>
        <member name="T:YCH.Context.Events.ContextEventArgs">
            <summary>
            Event object sent to listeners registered with an
            <see cref="T:YCH.Context.IApplicationContext"/> to inform them of
            context lifecycle events.
            </summary>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: ContextEventArgs.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
            <seealso cref="T:YCH.Context.IApplicationEventListener"/>
            <seealso cref="T:YCH.Context.EventListenerAttribute"/>
        </member>
        <member name="T:YCH.Context.ApplicationEventArgs">
            <summary>
            Encapsulates the data associated with an event raised by an
            <see cref="T:YCH.Context.IApplicationContext"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <author>Griffin Caprio (.NET)</author>
            <seealso cref="T:YCH.Context.IApplicationEventListener"/>
            <version>$Id: ApplicationEventArgs.cs,v 1.5 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.ApplicationEventArgs.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.ApplicationEventArgs"/> class.
            </summary>
        </member>
        <member name="P:YCH.Context.ApplicationEventArgs.TimeStamp">
            <summary>
            The date and time when the event occured.
            </summary>
            <value>
            The date and time when the event occured.
            </value>
        </member>
        <member name="P:YCH.Context.ApplicationEventArgs.EventTimeMilliseconds">
            <summary>
            The system time in milliseconds when the event happened.
            </summary>
            <value>
            The system time in milliseconds when the event happened.
            </value>
        </member>
        <member name="M:YCH.Context.Events.ContextEventArgs.#ctor(YCH.Context.Events.ContextEventArgs.ContextEvent)">
            <summary>
            Creates a new instance of the ContextEventArgs class to represent the
            supplied context event.
            </summary>
            <param name="e">The type of context event.</param>
        </member>
        <member name="M:YCH.Context.Events.ContextEventArgs.ToString">
            <summary>
            Returns a string representation of this object.
            </summary>
            <returns>A string representation of this object.</returns>
        </member>
        <member name="P:YCH.Context.Events.ContextEventArgs.Event">
            <summary>
            The event type.
            </summary>
        </member>
        <member name="T:YCH.Context.Events.ContextEventArgs.ContextEvent">
            <summary>
            The various context event types.
            </summary>
        </member>
        <member name="F:YCH.Context.Events.ContextEventArgs.ContextEvent.Refreshed">
            <summary>
            The event type when the context is refreshed or created.
            </summary>
        </member>
        <member name="F:YCH.Context.Events.ContextEventArgs.ContextEvent.Closed">
            <summary>
            The event type when the context is closed.
            </summary>
        </member>
        <member name="T:YCH.Context.Support.AbstractApplicationContext">
            <summary>
            Partial implementation of the
            <see cref="T:YCH.Context.IApplicationContext"/> interface.
            </summary>
            <remarks>
            <p>
            Does not mandate the type of storage used for configuration, but does
            implement common functionality. Uses the Template Method design
            pattern, requiring concrete subclasses to implement
            <see langword="abstract"/> methods.
            </p>
            <p>
            In contrast to a plain vanilla
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>, an
            <see cref="T:YCH.Context.IApplicationContext"/> is supposed
            to detect special objects defined in its object factory: therefore,
            this class automatically registers
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>s,
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            and <see cref="T:YCH.Context.IApplicationEventListener"/>s that are
            defined as objects in the context.
            </p>
            <p>
            An <see cref="T:YCH.Context.IMessageSource"/> may be also supplied as
            an object in the context, with the special, well-known-name of
            <c>"messageSource"</c>. Else, message resolution is delegated to the
            parent context.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergan Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: AbstractApplicationContext.cs,v 1.49 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
        </member>
        <member name="T:YCH.Core.IO.ConfigurableResourceLoader">
            <summary>
            Configurable implementation of the
            <see cref="T:YCH.Core.IO.IResourceLoader"/> interface.
            </summary>
            <remarks>
            <p>
            This <see cref="T:YCH.Core.IO.IResourceLoader"/> implementation
            supports the configuration of resource access protocols and the
            corresponding .NET types that know how to handle those protocols.
            </p>
            <p>
            Basic protocol-to-resource type mappings are also defined by this class,
            while others can be added either internally, by application contexts
            extending this class, or externally, by the end user configuring the
            context.
            </p>
            <p>
            Only one resource type can be defined for each protocol, but multiple
            protocols can map to the same resource type (for example, the
            <c>"http"</c> and <c>"ftp"</c> protocols both map to the
            <see cref="T:YCH.Core.IO.UrlResource"/> type. The protocols that are
            mapped by default can be found in the following list.
            </p>
            <p>
            <list type="bullet">
            <item>
            <description>assembly</description>
            </item>
            <item>
            <description>config</description>
            </item>
            <item>
            <description>file</description>
            </item>
            <item>
            <description>http</description>
            </item>
            <item>
            <description>https</description>
            </item>
            </list>
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConfigurableResourceLoader.cs,v 1.18 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="T:YCH.Core.IO.ResourceConverter"/>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
        </member>
        <member name="T:YCH.Core.IO.IResourceLoader">
            <summary>
            Describes an object that can load
            <see cref="T:YCH.Core.IO.IResource"/>s.
            </summary>
            <remarks>
            <p>
            An <see cref="T:YCH.Context.IApplicationContext"/> implementation is
            generally required to support the functionality described by this
            interface.
            </p>
            <p>
            The <see cref="T:YCH.Core.IO.ConfigurableResourceLoader"/> class is a
            standalone implementation that is usable outside an
            <see cref="T:YCH.Context.IApplicationContext"/>; the aforementioned
            class is also used by the
            <see cref="T:YCH.Core.IO.ResourceConverter"/> class.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IResourceLoader.cs,v 1.10 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="T:YCH.Core.IO.ResourceConverter"/>
            <seealso cref="T:YCH.Core.IO.ConfigurableResourceLoader"/>
        </member>
        <member name="M:YCH.Core.IO.IResourceLoader.GetResource(System.String)">
            <summary>
            Return an <see cref="T:YCH.Core.IO.IResource"/> handle for the
            specified resource.
            </summary>
            <remarks>
            <p>
            The handle should always be a reusable resource descriptor; this
            allows one to make repeated calls to the underlying
            <see cref="P:YCH.Core.IO.IInputStreamSource.InputStream"/>.
            </p>
            <p>
            <ul>
            <li>
            <b>Must</b> support fully qualified URLs, e.g. "file:C:/test.dat".
            </li>
            <li>
            Should support relative file paths, e.g. "test.dat" (this will be
            implementation-specific, typically provided by an
            <see cref="T:YCH.Context.IApplicationContext"/> implementation).
            </li>
            </ul>
            </p>
            <note>
            An <see cref="T:YCH.Core.IO.IResource"/> handle does not imply an
            existing resource; you need to check the value of an
            <see cref="T:YCH.Core.IO.IResource"/>'s
            <see cref="P:YCH.Core.IO.IResource.Exists"/> property to determine
            conclusively whether or not the resource actually exists.
            </note>
            </remarks>
            <param name="location">The resource location.</param>
            <returns>
            An appropriate <see cref="T:YCH.Core.IO.IResource"/> handle.
            </returns>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
        </member>
        <member name="F:YCH.Core.IO.ConfigurableResourceLoader.ProtocolSeparator">
            <summary>
            The separator between the protocol name and the resource name.
            </summary>
        </member>
        <member name="M:YCH.Core.IO.ConfigurableResourceLoader.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.ConfigurableResourceLoader"/> class.
            </summary>
        </member>
        <member name="M:YCH.Core.IO.ConfigurableResourceLoader.GetResource(System.String)">
            <summary>
            Returns a <see cref="T:YCH.Core.IO.IResource"/> that has been
            mapped to the protocol of the supplied <paramref name="resourceName"/>.
            </summary>
            <param name="resourceName">The name of the resource.</param>
            <returns>
            A new <see cref="T:YCH.Core.IO.IResource"/> instance for the
            supplied <paramref name="resourceName"/>.
            </returns>
            <exception cref="T:System.UriFormatException">
            If a <see cref="T:YCH.Core.IO.IResource"/> <see cref="T:System.Type"/>
            mapping does not exist for the supplied <paramref name="resourceName"/>.
            </exception>
            <exception cref="T:System.Exception">
            In the case of any errors arising from the instantiation of the
            returned <see cref="T:YCH.Core.IO.IResource"/> instance.
            </exception>
            <seealso cref="M:YCH.Core.IO.ResourceHandlerRegistry.RegisterResourceHandler(System.String,System.Type)"/>
        </member>
        <member name="M:YCH.Core.IO.ConfigurableResourceLoader.HasProtocol(System.String)">
            <summary>
            Checks that the supplied <paramref name="resourceName"/> starts
            with one of the protocol names currently mapped by this
            <see cref="T:YCH.Core.IO.ConfigurableResourceLoader"/> instance.
            </summary>
            <param name="resourceName">The name of the resource.</param>
            <returns>
            <see langword="true"/> if the supplied
            <paramref name="resourceName"/> starts with one of the known
            protocols; <see langword="false"/> if not, or if the supplied
            <paramref name="resourceName"/> is itself <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Core.IO.ConfigurableResourceLoader.GetProtocol(System.String)">
            <summary>
            Extracts the protocol name from the supplied
            <paramref name="resourceName"/>.
            </summary>
            <param name="resourceName">The name of the resource.</param>
            <returns>
            The extracted protocol name or <see langword="null"/> if the
            supplied <paramref name="resourceName"/> is unqualified (or
            is itself <see langword="null"/>).
            </returns>
        </member>
        <member name="P:YCH.Core.IO.ConfigurableResourceLoader.DefaultResourceProtocol">
            <summary>
            The default protocol to use for unqualified resources.
            </summary>
            <remarks>
            <p>
            The initial value is <c>"file"</c>.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Context.IConfigurableApplicationContext">
            <summary>
            Provides the means to configure an application context in addition to
            the methods exposed on the
            <see cref="T:YCH.Context.IApplicationContext"/> interface.
            </summary>
            <remarks>
            <p>
            This interface is to be implemented by most (if not all)
            <see cref="T:YCH.Context.IApplicationContext"/> implementations.
            </p>
            <p>
            Configuration and lifecycle methods are encapsulated here to avoid
            making them obvious to <see cref="T:YCH.Context.IApplicationContext"/>
            client code.
            </p>
            <p>
            Calling <see cref="M:System.IDisposable.Dispose"/> will close this
            application context, releasing all resources and locks that the
            implementation might hold. This includes disposing all cached
            <b>singleton</b> objects.
            </p>
            <note type="caution">
            <see cref="M:System.IDisposable.Dispose"/> does <i>not</i> invoke the
            attendant <see cref="M:System.IDisposable.Dispose"/> on any parent
            context.
            </note>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IConfigurableApplicationContext.cs,v 1.10 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:System.IDisposable"/>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
        </member>
        <member name="T:YCH.Context.IApplicationContext">
            <summary>
            The central interface to YCH.NET's IoC container.
            </summary>
            <remarks>
            <p>
            <see cref="T:YCH.Context.IApplicationContext"/> implementations
            provide:
            <list type="bullet">
            <item>
            <description>
            Object factory functionality inherited from the
            <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/>
            and <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>
            interfaces.
            </description>
            </item>
            <item>
            <description>
            The ability to resolve messages, supporting internationalization.
            Inherited from the <see cref="T:YCH.Context.IMessageSource"/>
            interface.
            </description>
            </item>
            <item>
            <description>
            The ability to load file resources in a generic fashion.
            Inherited from the <see cref="T:YCH.Core.IO.IResourceLoader"/>
            interface.
            </description>
            </item>
            <item>
            <description>
            Acts an an event registry for supporting loosely coupled eventing
            between objecs. Inherited from the
            <see cref="T:YCH.Objects.Events.IEventRegistry"/> interface.
            </description>
            </item>
            <item>
            <description>
            The ability to raise events related to the context lifecycle. Inherited
            from the <see cref="T:YCH.Context.IApplicationEventPublisher"/>
            interface.
            </description>
            </item>
            <item>
            <description>
            Inheritance from a parent context. Definitions in a descendant context
            will always take priority.
            </description>
            </item>
            </list>
            </p>
            <p>
            In addition to standard object factory lifecycle capabilities,
            <see cref="T:YCH.Context.IApplicationContext"/> implementations need
            to detect
            <see cref="T:YCH.Context.IApplicationContextAware"/>,
            <see cref="T:YCH.Objects.Events.IEventRegistryAware"/>, and
            <see cref="T:YCH.Context.IMessageSourceAware"/> objects and supply
            their attendant dependencies accordingly.
            </p>
            <p>
            This interface is the central client interface in YCH.NET's IoC
            container implementation. As such it does inherit a quite sizeable
            number of interfaces; implementations are strongly encouraged to use
            composition to satisfy each of the inherited interfaces (where
            appropriate of course).
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <seealso cref="T:YCH.Context.Support.AbstractApplicationContext"/>
            <seealso cref="T:YCH.Context.Support.XmlApplicationContext"/>
            <seealso cref="T:YCH.Context.Support.DelegatingMessageSource"/>
            <seealso cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>
            <version>$Id: IApplicationContext.cs,v 1.12 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IListableObjectFactory">
            <summary>
            Extension of the <see cref="T:YCH.Objects.Factory.IObjectFactory"/> interface
            to be implemented by object factories that can enumerate all their object instances,
            rather than attempting object lookup by name one by one as requested by clients.
            </summary>
            <remarks>
            <p>
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> implementations that preload
            all their objects (for example, DOM-based XML factories) may implement this
            interface. This interface is discussed in
            "Expert One-on-One J2EE Design and Development", by Rod Johnson.
            </p>
            <p>
            If this is an <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>,
            the return values will not take any
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> hierarchy into account, but
            will relate only to the objects defined in the current factory.
            Use the <see cref="T:YCH.Objects.Factory.ObjectFactoryUtils"/> helper class to
            get all objects.
            </p>
            <p>
            With the exception of
            <see cref="P:YCH.Objects.Factory.IListableObjectFactory.ObjectDefinitionCount"/>,
            the methods and properties in this interface are not designed for frequent
            invocation. Implementations may be slow.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IListableObjectFactory.cs,v 1.10 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IObjectFactory">
            <summary>
            The root interface for accessing a YCH.NET IoC container.
            </summary>
            <remarks>
            <p>
            This is the basic client view of a YCH.NET IoC container; further interfaces
            such as <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/> and
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectFactory"/>
            are available for specific purposes such as enumeration and configuration.
            </p>
            <p>
            This si the root interface to be implemented by objects that can hold a number
            of object definitions, each uniquely identified by a <see cref="T:System.String"/>
            name. An independent instance of any of these objects can be obtained
            (the Prototype design pattern), or a single shared instance can be obtained
            (a superior alternative to the Singleton design pattern, in which the instance is a
            singleton in the scope of the factory). Which type of instance
            will be returned depends on the object factory configuration - the API is the same.
            The Singleton approach is more useful and hence more common in practice.
            </p>
            <p>
            The point of this approach is that the IObjectFactory is a central registry of
            application components, and centralizes the configuring of application components
            (no more do individual objects need to read properties files, for example).
            See chapters 4 and 11 of "Expert One-on-One J2EE Design and Development" for a
            discussion of the benefits of this approach.
            </p>
            <p>
            Normally an IObjectFactory will load object definitions stored in a configuration
            source (such as an XML document), and use the <see cref="N:YCH.Objects"/>
            namespace to configure the objects. However, an implementation could simply return
            .NET objects it creates as necessary directly in .NET code. There are no
            constraints on how the definitions could be stored: LDAP, RDBMS, XML, properties
            file etc. Implementations are encouraged to support references amongst objects,
            to either Singletons or Prototypes.
            </p>
            <p>
            In contrast to the methods in
            <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/>, all of the methods
            in this interface will also check parent factories if this is an
            <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>. If an object is
            not found in this factory instance, the immediate parent is asked. Objects in
            this factory instance are supposed to override objects of the same name in any
            parent factory.
            </p>
            <p>
            Object factories are supposed to support the standard object lifecycle interfaces
            as far as possible. The maximum set of initialization methods and their standard
            order is:
            </p>
            <p>
            <list type="bullet">
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.IObjectNameAware"/>'s
            <see cref="P:YCH.Objects.Factory.IObjectNameAware.ObjectName"/> property.
            </description>
            </item>
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>'s
            <see cref="P:YCH.Objects.Factory.IObjectFactoryAware.ObjectFactory"/> property.
            </description>
            </item>
            <item>
            <description>
            <see cref="P:YCH.Context.IApplicationContextAware.ApplicationContext"/>
            (only applicable if running within an <see cref="T:YCH.Context.IApplicationContext"/>).
            </description>
            </item>
            <item>
            <description>
            The
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
            method of
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </description>
            </item>
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/> method.
            </description>
            </item>
            <item>
            <description>
            A custom init-method definition.
            </description>
            </item>
            <item>
            <description>
            The
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
            method of
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </description>
            </item>
            </list>
            </p>
            <p/>
            <p>
            On shutdown of an object factory, the following lifecycle methods apply:
            </p>
            <p>
            <list type="bullet">
            <item>
            <description>
            <see cref="T:System.IDisposable"/>'s
            <see cref="M:System.IDisposable.Dispose"/> method.
            </description>
            </item>
            <item>
            <description>
            A custom destroy-method definition.
            </description>
            </item>
            </list>
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IObjectFactory.cs,v 1.11 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.IsSingleton(System.String)">
            <summary>
            Is this object a singleton?
            </summary>
            <remarks>
            <p>
            That is, will <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            always return the same object?
            </p>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>True if the named object is a singleton.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.ContainsObject(System.String)">
            <summary>
            Does this object factory contain an object with the given name?
            </summary>
            <remarks>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>True if an object with the given name is defined.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.GetAliases(System.String)">
            <summary>
            Return the aliases for the given object name, if defined.
            </summary>
            <remarks>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The object name to check for aliases.</param>
            <returns>The aliases, or an empty array if none.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <remarks>
            <p>
            This method allows an object factory to be used as a replacement for the
            Singleton or Prototype design pattern.
            </p>
            <p>
            Note that callers should retain references to returned objects. There is no
            guarantee that this method will be implemented to be efficient. For example,
            it may be synchronized, or may need to run an RDBMS query.
            </p>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <remarks>
            <p>
            Provides a measure of type safety by throwing an exception if the object is
            not of the required <see cref="T:System.Type"/>.
            </p>
            <p>
            This method allows an object factory to be used as a replacement for the
            Singleton or Prototype design pattern.
            </p>
            <p>
            Note that callers should retain references to returned objects. There is no
            guarantee that this method will be implemented to be efficient. For example,
            it may be synchronized, or may need to run an RDBMS query.
            </p>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The name of the object to return.</param>
            <param name="requiredType">
            <see cref="T:System.Type"/> the object may match. Can be an interface or
            superclass of the actual class. For example, if the value is the
            <see cref="T:System.Object"/> class, this method will succeed whatever the
            class of the returned instance.
            </param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectNotOfRequiredTypeException">
            If the object is not of the required type.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.GetType(System.String)">
            <summary>
            Determine the type of the object with the given name.
            </summary>
            <remarks>
            <p>
            More specifically, checks the type of object that
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/> would return.
            For an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>, returns the type
            of object that the <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates.
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>
            The type of the object or <cref lang="null"/> if not determinable.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance.
            </summary>
            <remarks>
            <p>
            In addition to being generally useful, typically this method is used to provide
            dependency injection functionality for objects that are instantiated outwith the
            control of a developer. A case in point is the way that the current (1.1)
            ASP.NET classes instantiate web controls... the instantiation takes place within
            a private method of a compiled page, and thus cannot be hooked into the
            typical YCH.NET IOC container lifecycle for dependency injection.
            </p>
            <note type="implementnotes">
            <p>
            Implementors should note that the behaviour expected of this method must be the same
            as the behaviour resulting from a call to the
            <see cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)"/>
            method using the <see cref="P:System.Type.FullName"/> of the <see cref="T:System.Type"/>
            of the supplied <paramref name="target"/> as the name of the object definition to
            look up.
            </p>
            <p>
            This allows developers to supply an object definition that has a <i>name</i> that
            is the same as the <see cref="P:System.Type.FullName"/> property of the object
            instances that are passed to this method (see example below).
            </p>
            </note>
            </remarks>
            <example>
            The following code snippet assumes that the instantiated factory instance
            has been configured with an object definition named
            '<i>ExampleNamespace.BusinessObject</i>' that has been configured to set the
            <c>Dao</c> property of any <c>ExampleNamespace.BusinessObject</c> instance
            to an instance of an appropriate implementation...
            <code language="C#">
            namespace ExampleNamespace
            {
                public class BusinessObject
                {
                    private IDao _dao;
            		
                    public BusinessObject() {}
            
                    public IDao Dao
                    {
            		    get { return _dao;	}
                        set { _dao = value; }
                    }
                }
            }
            </code>
            with the corresponding driver code looking like so...
            <code language="C#">
            IObjectFactory factory = GetAnIObjectFactoryImplementation();
            BusinessObject instance = new BusinessObject();
            factory.ConfigureObject(instance);
            // at this point the dependencies for the 'instance' object will have been resolved...
            </code>
            </example>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object definition for the <see cref="P:System.Type.FullName"/>
            property of the supplied <paramref name="target"/> instance.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any of the target object's dependencies could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance
            using the named object definition.
            </summary>
            <remarks>
            <p>
            In addition to being generally useful, typically this method is used to provide
            dependency injection functionality for objects that are instantiated outwith the
            control of a developer. A case in point is the way that the current (1.1)
            ASP.NET classes instantiate web controls... the instantiation takes place within
            a private method of a compiled page, and thus cannot be hooked into the
            typical YCH.NET IOC container lifecycle for dependency injection.
            </p>
            </remarks>
            <example>
            The following code snippet assumes that the instantiated factory instance
            has been configured with an object definition named
            '<i>ExampleNamespace.BusinessObject</i>' that has been configured to set the
            <c>Dao</c> property of any <c>ExampleNamespace.BusinessObject</c> instance
            to an instance of an appropriate implementation...
            <code language="C#">
            namespace ExampleNamespace
            {
                public class BusinessObject
                {
                    private IDao _dao;
            		
                    public BusinessObject() {}
            
                    public IDao Dao
                    {
            		    get { return _dao;	}
                        set { _dao = value; }
                    }
                }
            }
            </code>
            with the corresponding driver code looking like so...
            <code language="C#">
            IObjectFactory factory = GetAnIObjectFactoryImplementation();
            BusinessObject instance = new BusinessObject();
            factory.ConfigureObject(instance, "object_definition_name");
            // at this point the dependencies for the 'instance' object will have been resolved...
            </code>
            </example>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <param name="name">
            The name of the object definition expressing the dependencies that are to
            be injected into the supplied <parameref name="target"/> instance.
            </param>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object definition for the supplied <paramref name="name"/>.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any of the target object's dependencies could not be created.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.IObjectFactory.Item(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <remarks>
            <p>
            This method allows an object factory to be used as a replacement for the
            Singleton or Prototype design pattern.
            </p>
            <p>
            Note that callers should retain references to returned objects. There is no
            guarantee that this method will be implemented to be efficient. For example,
            it may be synchronized, or may need to run an RDBMS query.
            </p>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            <p>
            This is the indexer for the <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            interface.
            </p>
            </remarks>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.ContainsObjectDefinition(System.String)">
            <summary>
            Check if this object factory contains an object definition with the given name.
            </summary>
            <remarks>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            <note>
            Ignores any singleton objects that have been registered by other means
            than object definitions.
            </note>
            </remarks>
            <param name="name">The name of the object to look for.</param>
            <returns>
            <see langword="true"/> if this object factory contains an object
            definition with the given name.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinition(System.String)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="includeAncestors">Whether to search parent object factories.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinitionNames">
            <summary>
            Return the names of all objects defined in this factory.
            </summary>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <remarks>
            <p>
            Does consider objects created by <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s,
            or rather it considers the type of objects created by
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> (which means that
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s will be instantiated).
            </p>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <remarks>
            <p>
            Does consider objects created by <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s,
            or rather it considers the type of objects created by
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> (which means that
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s will be instantiated).
            </p>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <remarks>
            <p>
            This version of the <see cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)"/>
            method matches all kinds of object definitions, be they singletons, prototypes, or
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s. Typically, the results
            of this method call will be the same as a call to
            <code>IListableObjectFactory.GetObjectsOfType(type,true,true)</code> .
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.IListableObjectFactory.ObjectDefinitionCount">
            <summary>
            Return the number of objects defined in the factory.
            </summary>
            <value>
            The number of objects defined in the factory.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.IHierarchicalObjectFactory">
            <summary>
            Sub-interface implemented by object factories that can be part
            of a hierarchy.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IHierarchicalObjectFactory.cs,v 1.6 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Objects.Factory.IHierarchicalObjectFactory.ParentObjectFactory">
            <summary>
            Return the parent object factory, or <see langword="null"/>
            if this factory does not have a parent.
            </summary>
            <value>
            The parent object factory, or <see langword="null"/>
            if this factory does not have a parent.
            </value>
        </member>
        <member name="T:YCH.Context.IMessageSource">
            <summary>
            Describes an object that can resolve messages.
            </summary>
            <remarks>
            <p> 
            This enables the parameterization and internationalization of messages.
            </p>
            <p>
            YCH.NET provides one out-of-the-box implementation for production
            use:
            <ul>
            <li><see cref="T:YCH.Context.Support.ResourceSetMessageSource"/>.</li>
            </ul>
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: IMessageSource.cs,v 1.12 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.Support.ResourceSetMessageSource"/>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetMessage(System.String)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            <p>
            If the lookup is not successful, implementations are permitted to
            take one of two actions.
            </p>
            <list type="bullet">
            <item>
            <description>Throw an exception.</description>
            </item>
            <item>
            <description>
            Return the supplied <paramref name="name"/> as is.
            </description>
            </item>
            </list>
            </remarks>
            <param name="name">The name of the message to resolve.</param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            <p>
            If the lookup is not successful, implementations are permitted to
            take one of two actions.
            </p>
            <list type="bullet">
            <item>
            <description>Throw an exception.</description>
            </item>
            <item>
            <description>
            Return the supplied <paramref name="name"/> as is.
            </description>
            </item>
            </list>
            </remarks>
            <param name="name">The name of the message to resolve.</param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            Note that the fallback behavior based on CultureInfo seem to 
            have a bug that is fixed by installed .NET 1.1 Service Pack 1.  
            <p>
            If the lookup is not successful, implementations are permitted to
            take one of two actions.
            </p>
            <list type="bullet">
            <item>
            <description>Throw an exception.</description>
            </item>
            <item>
            <description>
            Return the supplied <paramref name="name"/> as is.
            </description>
            </item>
            </list>
            </remarks>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            Note that the fallback behavior based on CultureInfo seem to 
            have a bug that is fixed by installed .NET 1.1 Service Pack 1.      
            <p>
            If the lookup is not successful, implementations are permitted to
            take one of two actions.
            </p>
            <list type="bullet">
            <item>
            <description>Throw an exception.</description>
            </item>
            <item>
            <description>
            Return the supplied <paramref name="name"/> as is.
            </description>
            </item>
            </list>
            </remarks>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message using all of the attributes contained within
            the supplied <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            argument.
            </summary>
            <param name="resolvable">
            The value object storing those attributes that are required to
            properly resolve a message.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetResourceObject(System.String)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            <p>
            This method must use the
            <see cref="P:System.Globalization.CultureInfo.CurrentUICulture"/>
            value to obtain a resource.
            </p>
            <p>
            Examples of resources that may be resolved by this method include
            (but are not limited to) objects such as icons and bitmaps.
            </p>
            </remarks>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            <p>
            Examples of resources that may be resolved by this method include
            (but are not limited to) objects such as icons and bitmaps.
            </p>
            </remarks>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <remarks>
            <p>
            Resource key names are of the form <c>objectName.propertyName</c>.
            </p>
            </remarks>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
        </member>
        <member name="T:YCH.Context.IApplicationEventPublisher">
            <summary>
            Encapsulates event publication functionality.
            </summary>
            <remarks>
            <p>
            Serves as a super-interface for the
            <see cref="T:YCH.Context.IApplicationContext"/> interface.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IApplicationEventPublisher.cs,v 1.2 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.IApplicationEventPublisher.PublishEvent(System.Object,YCH.Context.ApplicationEventArgs)">
            <summary>
            Publishes an application context event.
            </summary>
            <param name="sender">
            The source of the event. May be <see langword="null"/>.
            </param>
            <param name="e">
            The event that is to be raised.
            </param>
        </member>
        <member name="T:YCH.Objects.Events.IEventRegistry">
            <summary>
            A registry that manages subscriptions to and the
            publishing of events.
            </summary>
            <author>Griffin Caprio</author>
            <version>$Id: IEventRegistry.cs,v 1.5 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Events.IEventRegistry.PublishEvents(System.Object)">
            <summary>
            Publishes <b>all</b> events of the source object.
            </summary>
            <param name="sourceObject">
            The source object containing events to publish.
            </param>
        </member>
        <member name="M:YCH.Objects.Events.IEventRegistry.Subscribe(System.Object)">
            <summary>
            Subscribes to <b>all</b> events published, if the subscriber
            implements compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
        </member>
        <member name="M:YCH.Objects.Events.IEventRegistry.Subscribe(System.Object,System.Type)">
            <summary>
            Subscribes to the published events of all objects of a given
            <see cref="T:System.Type"/>, if the subscriber implements
            compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
            <param name="targetSourceType">
            The target <see cref="T:System.Type"/> to subscribe to.
            </param>
        </member>
        <member name="E:YCH.Context.IApplicationContext.ContextEvent">
            <summary>
            Raised in response to an application context event.
            </summary>
        </member>
        <member name="P:YCH.Context.IApplicationContext.StartupDate">
            <summary>
            Returns the date and time this context was loaded.
            </summary>
            <remarks>
            <p>
            This is to be set immediately after an 
            <see cref="T:YCH.Context.IApplicationContext"/> has been
            instantiated and its configuration has been loaded. Implementations
            are permitted to update this value if the context is reset or
            refreshed in some way.
            </p>
            </remarks>
            <returns>
            The <see cref="T:System.DateTime"/> representing when this context
            was loaded.
            </returns>
            <seealso cref="M:YCH.Context.IConfigurableApplicationContext.Refresh"/>
        </member>
        <member name="P:YCH.Context.IApplicationContext.ParentContext">
            <summary>
            Gets the parent context, or <see langword="null"/> if there is no
            parent context.
            </summary>
            <remarks>
            <p>
            If the parent context is <see langword="null"/>, then this context
            is the root of any context hierarchy.
            </p>
            </remarks>
            <returns>
            The parent context, or <see langword="null"/>  if there is no
            parent.
            </returns>
        </member>
        <member name="P:YCH.Context.IApplicationContext.Name">
            <summary>
            Gets and sets a name for this context.
            </summary>
            <returns>
            A name for this context.
            </returns>
        </member>
        <member name="M:YCH.Context.IConfigurableApplicationContext.AddObjectFactoryPostProcessor(YCH.Objects.Factory.Config.IObjectFactoryPostProcessor)">
            <summary>
            Add an
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            that will get applied to the internal object factory of this
            application context on refresh, before any of the object
            definitions are evaluated.
            </summary>
            <remarks>
            <p>
            To be invoked during context configuration.
            </p>
            </remarks>
            <param name="objectFactoryPostProcessor">
            The factory processor to register.
            </param>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
        </member>
        <member name="M:YCH.Context.IConfigurableApplicationContext.Refresh">
            <summary>
            Load or refresh the persistent representation of the configuration,
            which might an XML file, properties file, or relational database schema.
            </summary>
            <exception cref="T:YCH.Context.ApplicationContextException">
            If the configuration cannot be loaded.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object factory could not be initialized.
            </exception>
        </member>
        <member name="P:YCH.Context.IConfigurableApplicationContext.ObjectFactory">
            <summary>
            Return the internal object factory of this application context.
            </summary>
            <remarks>
            <p>
            Can be used to access specific functionality of the factory.
            </p>
            <note type="caution">
            This is just guaranteed to return an instance that is not 
            <see langword="null"/> <i>after</i> the context has been refreshed
            at least once.
            </note>
            <note type="caution">
            Do not use this to post-process the object factory; singletons
            will already have been instantiated. Use an
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            to intercept the object factory setup process before objects even
            get touched.
            </note>
            </remarks>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
        </member>
        <member name="P:YCH.Context.IConfigurableApplicationContext.ParentContext">
            <summary>
            Sets the parent of this application context.
            </summary>
            <remarks>
            <note>
            The parent should <b>not</b> be changed: it should only be set
            outside a constructor if it isn't available when an instance of
            this class is created.
            </note>
            </remarks>
            <value>
            The parent context.
            </value>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.ContextSectionName">
            <summary>
            Name of the .Net config section that contains YCH.Net context definition.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.TypeAliasesSectionName">
            <summary>
            Name of the .Net config section that contains YCH.Net type aliases.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.TypeConvertersSectionName">
            <summary>
            Name of the .Net config section that contains YCH.Net type aliases.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.ConfigParsersSectionName">
            <summary>
            Name of the .Net config section that contains definitions 
            for custom config parsers.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.ResourcesSectionName">
            <summary>
            Name of the .Net config section that contains definitions 
            for custom resource handlers.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.RootContextName">
            <summary>
            Name of the root context.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.MessageSourceObjectName">
            <summary>
            The special, well-known-name of the default
            <see cref="T:YCH.Context.IMessageSource"/> in the context.
            </summary>
            <remarks>
            <p>
            If no <see cref="T:YCH.Context.IMessageSource"/> can be found
            in the context using this lookup key, then message resolution
            will be delegated to the parent context (if any).
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.EventRegistryObjectName">
            <summary>
            The special, well-known-name of the default
            <see cref="T:YCH.Objects.Events.IEventRegistry"/> in the context.
            </summary>
            <remarks>
            <p>
            If no <see cref="T:YCH.Objects.Events.IEventRegistry"/> can be found
            in the context using this lookup key, then a default
            <see cref="T:YCH.Objects.Events.IEventRegistry"/> will be used.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext.log">
            <summary>
            The shared <see cref="T:log4net.ILog"/> instance for this class (and derived classes).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext._messageSource">
            <summary>
            The <see cref="T:YCH.Context.IMessageSource"/> instance we delegate
            our implementation of said interface to.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.AbstractApplicationContext._eventRegistry">
            <summary>
            The <see cref="T:YCH.Objects.Events.IEventRegistry"/> instance we
            delegate our implementation of said interface to.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>
            with no parent context.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes
            no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.#ctor(System.Boolean)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>
            with no parent context.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes
            no public constructors.
            </p>
            </remarks>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.#ctor(System.String,System.Boolean,YCH.Context.IApplicationContext)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>
            with the supplied parent context.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes
            no public constructors.
            </p>
            </remarks>
            <param name="name">The application context name.</param>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="parentApplicationContext">The parent application context.</param>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.Dispose">
            <summary>
            Closes this context and disposes of any resources (such as
            singleton objects in the wrapped
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>).
            </summary>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.RefreshObjectFactory">
            <summary>
            Subclasses must implement this method to perform the actual
            configuration loading.
            </summary>
            <remarks>
            <p>
            This method is invoked by
            <see cref="M:YCH.Context.Support.AbstractApplicationContext.Refresh"/>,
            before any other initialization occurs.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors encountered while refreshing the object factory.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetInternalParentObjectFactory">
            <summary>
            Returns the internal object factory of the parent context if it implements
            <see cref="T:YCH.Context.IConfigurableApplicationContext"/>; else,
            returns the parent context itself.
            </summary>
            <returns>
            The parent context's object factory, or the parent itself.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.OnContextEvent(YCH.Context.ApplicationEventArgs)">
            <summary>
            Raises an application context event.
            </summary>
            <param name="e">
            Any arguments to the event. May be <see langword="null"/>.
            </param>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.OnContextEvent(System.Object,YCH.Context.ApplicationEventArgs)">
            <summary>
            Raises an application context event.
            </summary>
            <param name="source">
            The source of the event.
            </param>
            <param name="e">
            Any arguments to the event. May be <see langword="null"/>.
            </param>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.PostProcessObjectFactory(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory)">
            <summary>
            Modify the application context's internal object factory after its standard
            initialization.
            </summary>
            <remarks>
            <p>
            All object definitions will have been loaded, but no objects
            will have been instantiated yet. This allows for the registration
            of special
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            in certain
            <see cref="T:YCH.Context.IApplicationContext"/> implementations.
            </p>
            </remarks>
            <param name="objectFactory">
            The object factory used by the application context.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>.
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.OnRefresh">
            <summary>
            Template method which can be overridden to add context-specific
            refresh work.
            </summary>
            <remarks>
            <p>
            Called on initialization of special objects, before instantiation
            of singletons.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.InvokeObjectFactoryPostProcessors">
            <summary>
            Instantiate and invoke all registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            objects, respecting any explicit ordering.
            </summary>
            <remarks>
            <note type="caution">
            <b>Must</b> be called before singleton instantiation.
            </note>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">In the case of errors.</exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.RegisterObjectPostProcessorChecker">
            <summary>
            Register an IObjectPostProcessorChecker that logs an info
            message when an object is created during IObjectPostProcessor
            instantiation, i.e. when an object is not eligible for being
            processed by all IObjectPostProcessors.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.InitEventRegistry">
            <summary>
            Initializes the default event registry for this context.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetInternalParentMessageSource">
            <summary>
            Returns the internal message source of the parent context if said
            parent context is an <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>, else
            simply the parent context itself.
            </summary>
            <returns>
            The internal message source of the parent context if said
            parent context is an <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>, else
            simply the parent context itself.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.InitMessageSource">
            <summary>
            Initializes the default message source for this context.
            </summary>
            <remarks>
            <p>
            Uses any parent context's message source if one is not available
            in this context.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.AddObjectFactoryPostProcessor(YCH.Objects.Factory.Config.IObjectFactoryPostProcessor)">
            <summary>
            Add a new <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            that will get applied to the internal object factory of this application context
            on refresh, before any of the object definitions are evaluated.
            </summary>
            <param name="objectFactoryPostProcessor">
            The factory processor to register.
            </param>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.Refresh">
            <summary>
            Load or refresh the persistent representation of the configuration,
            which might an XML file, properties file, or relational database schema.
            </summary>
            <exception cref="T:YCH.Context.ApplicationContextException">
            If the configuration cannot be loaded.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object factory could not be initialized.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectNamesForType(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectDefinitionNames">
            <summary>
            Return the names of all objects defined in this factory.
            </summary>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinitionNames"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectDefinition(System.String)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="includeAncestors">Whether to search parent object factories.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectsOfType(System.Type)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.ContainsObjectDefinition(System.String)">
            <summary>
            Check if this object factory contains an object definition with the given name.
            </summary>
            <param name="name">The name of the object to look for.</param>
            <returns>
            True if this object factory contains an object definition with the given name.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.ContainsObjectDefinition(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.ContainsObject(System.String)">
            <summary>
            Does this object factory contain an object with the given name?
            </summary>
            <param name="name">The name of the object to query.</param>
            <returns>
            <see langword="true"/> if an object with the given name is defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ContainsObject(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetAliases(System.String)">
            <summary>
            Return the aliases for the given object name, if defined.
            </summary>
            <param name="name">The object name to check for aliases.</param>
            <returns>The aliases, or an empty array if none.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetAliases(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObject(System.String,System.Type)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <param name="requiredType">
            <see cref="T:System.Type"/> the object may match. Can be an interface or
            superclass of the actual class. For example, if the value is the
            <see cref="T:System.Object"/> class, this method will succeed whatever the
            class of the returned instance.
            </param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectNotOfRequiredTypeException">
            If the object is not of the required type.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetObject(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.IsSingleton(System.String)">
            <summary>
            Is this object a singleton?
            </summary>
            <param name="name">The name of the object to query.</param>
            <returns>True if the named object is a singleton.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.IsSingleton(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetType(System.String)">
            <summary>
            Determine the <see cref="T:System.Type"/>  of the object with the
            given name.
            </summary>
            <param name="name">The name of the object to query.</param>
            <returns>
            The <see cref="T:System.Type"/> of the object, or <see langword="null"/>
            if not determinable.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetType(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.ConfigureObject(System.Object)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance.
            </summary>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.ConfigureObject(System.Object,System.String)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance
            using the named object definition.
            </summary>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <param name="name">
            The name of the object definition expressing the dependencies that are to
            be injected into the supplied <parameref name="target"/> instance.
            </param>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetMessage(System.String)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <returns>
            The resolved message if the lookup was successful.
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetMessage(System.String,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful.
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message using all of the attributes contained within
            the supplied <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            argument.
            </summary>
            <param name="resolvable">
            The value object storing those attributes that are required to
            properly resolve a message.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.YCH#Context#IMessageSource#GetResourceObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.YCH#Context#IMessageSource#GetResourceObject(System.String)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetResourceObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.GetResourceObject(System.String)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <seealso cref="M:YCH.Context.IMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.PublishEvents(System.Object)">
            <summary>
            Publishes <b>all</b> events of the source object.
            </summary>
            <param name="sourceObject">
            The source object containing events to publish.
            </param>
            <seealso cref="M:YCH.Objects.Events.IEventRegistry.PublishEvents(System.Object)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.Subscribe(System.Object)">
            <summary>
            Subscribes to <b>all</b> events published, if the subscriber
            implements compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
            <seealso cref="M:YCH.Objects.Events.IEventRegistry.Subscribe(System.Object)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.Subscribe(System.Object,System.Type)">
            <summary>
            Subscribes to published events of a all objects of a given
            <see cref="T:System.Type"/>, if the subscriber implements
            compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
            <param name="targetSourceType">
            The target <see cref="T:System.Type"/> to subscribe to.
            </param>
            <seealso cref="M:YCH.Objects.Events.IEventRegistry.Subscribe(System.Object,System.Type)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractApplicationContext.PublishEvent(System.Object,YCH.Context.ApplicationEventArgs)">
            <summary>
            Publishes an application context event.
            </summary>
            <remarks>
            <p>
            
            </p>
            </remarks>
            <param name="sender">
            The source of the event. May be <see langword="null"/>.
            </param>
            <param name="e">
            The event that is to be raised.
            </param>
            <seealso cref="M:YCH.Context.IApplicationEventPublisher.PublishEvent(System.Object,YCH.Context.ApplicationEventArgs)"/>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.StartupDateMilliseconds">
            <summary>
            The timestamp when this context was first loaded.
            </summary>
            <returns>
            The timestamp (milliseconds) when this context was first loaded.
            </returns>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.CaseSensitive">
            <summary>
            Gets a flag indicating whether context should be case sensitive.
            </summary>
            <value><c>true</c> if object lookups are case sensitive; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.MessageSource">
            <summary>
            The <see cref="T:YCH.Context.IMessageSource"/> for this context.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the context has not been initialized yet.
            </exception>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.EventRegistry">
            <summary>
            The <see cref="T:YCH.Objects.Events.IEventRegistry"/> for this context.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the context has not been initialized yet.
            </exception>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.ObjectFactoryPostProcessors">
            <summary>
            Returns the list of the
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>s
            that will be applied to the objects created with this factory.
            </summary>
            <remarks>
            <p>
            The elements of this list are instances of implementations of the
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            interface.
            </p>
            </remarks>
            <value>
            The list of the
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>s
            that will be applied to the objects created with this factory.
            </value>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.ObjectFactory">
            <summary>
            Return the internal object factory of this application context.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.ParentContext">
            <summary>
            Gets the parent context, or <see langword="null"/> if there is no
            parent context.
            </summary>
            <returns>
            The parent context, or <see langword="null"/>  if there is no
            parent.
            </returns>
            <seealso cref="P:YCH.Context.IApplicationContext.ParentContext"/>
        </member>
        <member name="E:YCH.Context.Support.AbstractApplicationContext.ContextEvent">
            <summary>
            Raised in response to an implementation-dependant application
            context event.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.StartupDate">
            <summary>
            The date and time this context was first loaded.
            </summary>
            <returns>
            The <see cref="T:System.DateTime"/> representing when this context
            was first loaded.
            </returns>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.Name">
            <summary>
            A name for this context.
            </summary>
            <returns>
            A name for this context.
            </returns>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.ObjectDefinitionCount">
            <summary>
            Return the number of objects defined in the factory.
            </summary>
            <value>
            The number of objects defined in the factory.
            </value>
            <seealso cref="P:YCH.Objects.Factory.IListableObjectFactory.ObjectDefinitionCount"/>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.Item(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
        </member>
        <member name="P:YCH.Context.Support.AbstractApplicationContext.ParentObjectFactory">
            <summary>
            Return the parent object factory, or <see langword="null"/> if there is none.
            </summary>
            <value>
            The parent object factory, or <see langword="null"/> if there is none.
            </value>
            <seealso cref="P:YCH.Objects.Factory.IHierarchicalObjectFactory.ParentObjectFactory"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IObjectPostProcessor">
            <summary>
            Allows for custom modification of new object instances, e.g.
            checking for marker interfaces or wrapping them with proxies.
            </summary>
            <remarks>
            <p>
            Application contexts can auto-detect
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            objects in their object definitions and apply them before any other
            objects get created. Plain object factories allow for programmatic
            registration of post-processors.
            </p>
            <p>
            Typically, post-processors that populate objects via marker interfaces
            or the like will implement
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>,
            and post-processors that wrap objects with proxies will normally implement
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: IObjectPostProcessor.cs,v 1.8 2006/04/09 07:18:47 markpollack Exp $</version>
            <see cref="T:YCH.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)">
            <summary>
            Apply this <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            to the given new object instance <i>before</i> any object initialization callbacks.
            </summary>
            <remarks>
            <p>
            The object will already be populated with property values.
            The returned object instance may be a wrapper around the original.
            </p>
            </remarks>
            <param name="instance">
            The new object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)">
            <summary>
            Apply this <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/> to the
            given new object instance <i>after</i> any object initialization callbacks.
            </summary>
            <remarks>
            <p>
            The object will already be populated with property values. The returned object
            instance may be a wrapper around the original.
            </p>
            </remarks>
            <param name="instance">
            The new object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="T:YCH.Context.Support.AbstractMessageSource">
            <summary>
            Abstract implementation of the
            <see cref="T:YCH.Context.IHierarchicalMessageSource"/> interface,
            making it easy to implement a custom
            <see cref="T:YCH.Context.IMessageSource"/>.
            </summary>
            <remarks>
            <p>
            Subclasses must implement the <see langword="abstract"/>
            <see cref="M:YCH.Context.Support.AbstractMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)"/>
            method.
            </p>
            <p>
            Supports not only <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            as primary messages but also the resolution of message arguments that
            are in turn <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            instances themselves.
            </p>
            <p>
            This class does <b>not</b> implement caching, so subclasses can
            dynamically change messages over time.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: AbstractMessageSource.cs,v 1.16 2006/04/20 23:42:23 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.IMessageSourceResolvable"/>
            <seealso cref="T:YCH.Context.IMessageSource"/>
            <seealso cref="T:YCH.Context.IHierarchicalMessageSource"/>
        </member>
        <member name="T:YCH.Context.IHierarchicalMessageSource">
            <summary>
            Sub-interface of <see cref="T:YCH.Context.IMessageSource"/> to be
            implemented by objects that can resolve messages hierarchically.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IHierarchicalMessageSource.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.IMessageSource"/>
        </member>
        <member name="P:YCH.Context.IHierarchicalMessageSource.ParentMessageSource">
            <summary>
            The parent message source used to try and resolve messages that
            this object can't resolve.
            </summary>
            <remarks>
            <p>
            If the value of this property is <see langword="null"/> then no
            further resolution is possible.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Returns a format string.
            </summary>
            <remarks>
            <p>
            Subclasses must implement this method to resolve a message.
            </p>
            </remarks>
            <param name="code">The code of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            A format string or <see langword="null"/> if not found.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.ResolveObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolves an object (typically an icon or bitmap).
            </summary>
            <remarks>
            <p>
            Subclasses must implement this method to resolve an object.
            </p>
            </remarks>
            <param name="code">The code of the object to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            The resolved object or <see langword="null"/> if not found.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.ApplyResourcesToObject(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <remarks>
            <p>
            Subclasses must implement this method to apply resources
            to an arbitrary object.
            </p>
            </remarks>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.AbstractMessageSource"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetMessage(System.String)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <returns>
            The resolved message if the lookup was successful.
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved and the value of the
            <see cref="P:YCH.Context.Support.AbstractMessageSource.UseCodeAsDefaultMessage"/> property was
            <see langword="false"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetMessage(System.String,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful.
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved and the value of the
            <see cref="P:YCH.Context.Support.AbstractMessageSource.UseCodeAsDefaultMessage"/> property was
            <see langword="false"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            Note that the fallback behavior based on CultureInfo seem to 
            have a bug that is fixed by installed .NET 1.1 Service Pack 1.  
            </remarks>	   
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved and the value of the
            <see cref="P:YCH.Context.Support.AbstractMessageSource.UseCodeAsDefaultMessage"/> property was
            <see langword="false"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            Note that the fallback behavior based on CultureInfo seem to 
            have a bug that is fixed by installed .NET 1.1 Service Pack 1.  
            </remarks>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If no message could be resolved and the value of the
            <see cref="P:YCH.Context.Support.AbstractMessageSource.UseCodeAsDefaultMessage"/> property was
            <see langword="false"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message using all of the attributes contained within
            the supplied <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            argument.
            </summary>
            <param name="resolvable">
            The value object storing those attributes that are required to
            properly resolve a message.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <remarks>
            Note that the fallback behavior based on CultureInfo seem to 
            have a bug that is fixed by installed .NET 1.1 Service Pack 1.  
            </remarks>	    
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.  If
            the resource name resolves to null, then in .NET 1.1 the return
            value will be String.Empty whereas in .NET 2.0 it will return
            null.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.GetResourceObject(System.String)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <seealso cref="M:YCH.Context.IMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractMessageSource.CodeAsMessage(System.String)">
            <summary>
            Wraps supplied <paramref name="code"/> with markers to make it
            easier to notice missing messages.
            </summary>
            <param name="code">The code to return as the message.</param>
            <returns>
            The supplied <paramref name="code"/> wrapped with markers to make
            it more visible.
            </returns>
        </member>
        <member name="P:YCH.Context.Support.AbstractMessageSource.UseCodeAsDefaultMessage">
            <summary>
            Should the message lookup name be used as the default message?
            </summary>
            <remarks>
            <p>
            If <see langword="true"/>, the value supplied as the message lookup
            key to any of the various <code>GetMessage</code> methods on this class
            will return the message lookup key if the message could not be
            resolved; if <see langword="false"/>, a
            <see cref="T:YCH.Context.NoSuchMessageException"/> will be thrown.
            </p>
            <p>
            Useful for development and debugging. The default is
            <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if the message lookup name should be used as
            the default message?
            </value>
        </member>
        <member name="P:YCH.Context.Support.AbstractMessageSource.ParentMessageSource">
            <summary>
            The parent message source used to try and resolve messages that
            this object can't resolve.
            </summary>
            <seealso cref="P:YCH.Context.IHierarchicalMessageSource.ParentMessageSource"/>
        </member>
        <member name="T:YCH.Context.Support.AbstractXmlApplicationContext">
            <summary>
            Convenient abstract superclass for
            <see cref="T:YCH.Context.IApplicationContext"/> implementations that
            draw their configuration from XML documents containing object
            definitions as understood by an 
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: AbstractXmlApplicationContext.cs,v 1.15 2006/05/17 17:44:06 bbaia Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.AbstractXmlApplicationContext"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes
            no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.#ctor(System.String,System.Boolean,YCH.Context.IApplicationContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.AbstractXmlApplicationContext"/> class
            with the given parent context.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes
            no public constructors.
            </p>
            </remarks>
            <param name="name">The application context name.</param>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="parentContext">The parent context.</param>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.GetConfigurationLocations">
            <summary>
            An array of resource locations, referring to the XML object
            definition files that this context is to be built with.
            </summary>
            <remarks>
            <p>
            Examples of the format of the various strings that would be
            returned by accessing this property can be found in the overview
            documentation of with the <see cref="T:YCH.Context.Support.XmlApplicationContext"/>
            class.
            </p>
            </remarks>
            <returns>
            An array of resource locations, or <see langword="null"/> if none.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.RefreshObjectFactory">
            <summary>
            Instantiates and populates the underlying
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> with the object
            definitions yielded up by the <see cref="M:YCH.Context.Support.AbstractXmlApplicationContext.GetConfigurationLocations"/>
            method.
            </summary>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors encountered while refreshing the object factory.
            </exception>
            <exception cref="T:YCH.Context.ApplicationContextException">
            In the case of errors encountered reading any of the resources
            yielded by the <see cref="M:YCH.Context.Support.AbstractXmlApplicationContext.GetConfigurationLocations"/> method.
            </exception>
            <seealso cref="M:YCH.Context.Support.AbstractApplicationContext.RefreshObjectFactory"/>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.CreateXmlObjectDefinitionReader(YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Create the object definition reader used for loading the object
            definitions of this context.
            </summary>
            <remarks>
            <p>
            This default implementation creates an instance of
            <see cref="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry)"/>.
            </p>
            </remarks>
            <param name="objectFactory">
            The object factory of this context
            </param>
            <returns></returns>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.InitObjectDefinitionReader(YCH.Objects.Factory.Xml.XmlObjectDefinitionReader)">
            <summary>
            Initialize the object definition reader used for loading the object
            definitions of this context.
            </summary>
            <remarks>
            <p>
            The default implementation of this method is a no-op; i.e. it does
            nothing. Can be overridden in subclasses to provide custom
            initialization of the supplied
            <paramref name="objectDefinitionReader"/>; for example, a derived
            class may want to turn off XML validation.
            </p>
            </remarks>
            <param name="objectDefinitionReader">
            The object definition reader used by this context.
            </param>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.LoadObjectDefinitions(YCH.Objects.Factory.Xml.XmlObjectDefinitionReader)">
            <summary>
            Load the object definitions with the given 
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/>.
            </summary>
            <remarks>
            <p>
            The lifecycle of the object factory is handled by
            <see cref="M:YCH.Context.Support.AbstractXmlApplicationContext.RefreshObjectFactory"/>;
            therefore this method is just supposed to load and / or register
            object definitions.
            </p>
            </remarks>
            <param name="objectDefinitionReader">
            The reader containing object definitions.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of object registration errors.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors encountered reading any of the resources
            yielded by the <see cref="M:YCH.Context.Support.AbstractXmlApplicationContext.GetConfigurationLocations"/> method.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.AbstractXmlApplicationContext.CreateObjectFactory">
            <summary>
            Create the object factory for this context.
            </summary>
            <remarks>
            <p>
            This default implementation creates a
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>
            with the internal object factory of this context's parent serving
            as the parent object factory.
            </p>
            </remarks>
            <returns>The object factory for this context.</returns>
        </member>
        <member name="P:YCH.Context.Support.AbstractXmlApplicationContext.ObjectFactory">
            <summary>
            Subclasses must return their internal object factory here.
            </summary>
            <returns>
            The internal object factory for the application context.
            </returns>
            <seealso cref="P:YCH.Context.Support.AbstractApplicationContext.ObjectFactory"/>
        </member>
        <member name="T:YCH.Context.Support.ApplicationContextAwareProcessor">
            <summary>
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            implementation that passes the application context to object that
            implement the
            <see cref="T:YCH.Context.IApplicationContextAware"/>,
            <see cref="T:YCH.Context.IMessageSourceAware"/>, and
            <see cref="T:YCH.Context.IResourceLoaderAware"/> interfaces. 
            </summary>
            <remarks>
            <p>
            If an object's class implements more than one of the
            <see cref="T:YCH.Context.IApplicationContextAware"/>,
            <see cref="T:YCH.Context.IMessageSourceAware"/>, and
            <see cref="T:YCH.Context.IResourceLoaderAware"/> interfaces, then the
            order in which the interfaces are satisfied is as follows...
            <list type="bullet">
            <item><description>
            <see cref="T:YCH.Context.IResourceLoaderAware"/>
            </description></item>
            <item><description>
            <see cref="T:YCH.Context.IMessageSourceAware"/>
            </description></item>
            <item><description>
            <see cref="T:YCH.Context.IApplicationContextAware"/>
            </description></item>
            </list>
            </p>
            <p>
            Application contexts will automatically register this with their
            underlying object factory. Applications should thus never need to use
            this class directly.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: ApplicationContextAwareProcessor.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.ApplicationContextAwareProcessor.#ctor(YCH.Context.IApplicationContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.ApplicationContextAwareProcessor"/> class.
            </summary>
            <param name="applicationContext">
            The <see cref="T:YCH.Context.IApplicationContext"/> that this
            instance will work with.
            </param>
        </member>
        <member name="M:YCH.Context.Support.ApplicationContextAwareProcessor.PostProcessAfterInitialization(System.Object,System.String)">
            <summary>
            Apply this <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            to the given new object instance <i>before</i> any object
            initialization callbacks.
            </summary>
            <param name="obj">
            The new object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The the object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.ApplicationContextAwareProcessor.PostProcessBeforeInitialization(System.Object,System.String)">
            <summary>
            Apply this <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/> to the
            given new object instance <i>after</i> any object initialization
            callbacks.
            </summary>
            <param name="obj">
            The new object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
        </member>
        <member name="T:YCH.Context.Support.ApplicationObjectSupport">
            <summary>
            Convenient superclass for application objects that want to be aware of
            the application context, e.g. for custom lookup of collaborating object
            or for context-specific resource access. 
            </summary>
            <remarks>
            <p>
            It saves the application context reference and provides an
            initialization callback method. Furthermore, it offers numerous
            convenience methods for message lookup.
            </p>
            <p>
            There is no requirement to subclass this class: it just makes things
            a little easier if you need access to the context, e.g. for access to
            file resources or to the message source. Note that many application
            objects do not need to be aware of the application context at all,
            as they can receive collaborating objects via object references.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: ApplicationObjectSupport.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Context.IApplicationContextAware">
            <summary>
            To be implemented by any object that wishes to be notified
            of the <see cref="T:YCH.Context.IApplicationContext"/> that it runs in.
            </summary>
            <remarks>
            <p>
            Implementing this interface makes sense when an object requires access
            to a set of collaborating objects. Note that configuration via object
            references is preferable to implementing this interface just for object
            lookup purposes.
            </p>
            <p>
            This interface can also be implemented if an object needs access to
            file resources, i.e. wants to call
            <see cref="M:YCH.Core.IO.IResourceLoader.GetResource(System.String)"/>, or access to
            the <see cref="T:YCH.Context.IMessageSource"/>. However, it is
            preferable to implement the more specific
            <see cref="T:YCH.Context.IResourceLoaderAware"/>
            interface to receive a reference to the
            <see cref="T:YCH.Context.IMessageSource"/> object in that scenario.
            </p>
            <p>
            Note that <see cref="T:YCH.Core.IO.IResource"/> dependencies can also
            be exposed as object properties of the
            <see cref="T:YCH.Core.IO.IResource"/> type, populated via strings with
            automatic type conversion performed by an object factory. This obviates
            the need for implementing any callback interface just for the purpose
            of accessing a specific file resource.
            </p>
            <p>
            <see cref="T:YCH.Context.Support.ApplicationObjectSupport"/>
            is a convenience implementation of this interface for your
            application objects.
            </p>
            <p>
            For a list of all object lifecycle methods, see the overview for the 
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> interface.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IApplicationContextAware.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/>
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            <version>$Id: IApplicationContextAware.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Context.IApplicationContextAware.ApplicationContext">
            <summary>
            Set the <see cref="T:YCH.Context.IApplicationContext"/> that this
            object runs in.
            </summary>
            <remarks>
            <p>
            Normally this call will be used to initialize the object.
            </p>
            <p>
            Invoked after population of normal object properties but before an
            init callback such as
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            or a custom init-method. Invoked after the setting of any
            <see cref="T:YCH.Context.IResourceLoaderAware"/>'s
            <see cref="P:YCH.Context.IResourceLoaderAware.ResourceLoader"/>
            property.
            </p>
            </remarks>
            <exception cref="T:YCH.Context.ApplicationContextException">
            In the case of application context initialization errors.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If thrown by any application context methods.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectInitializationException"/>
        </member>
        <member name="M:YCH.Context.Support.ApplicationObjectSupport.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.ApplicationObjectSupport"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.ApplicationObjectSupport.#ctor(YCH.Context.IApplicationContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.ApplicationObjectSupport"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
            <param name="applicationContext">
            The <see cref="T:YCH.Context.IApplicationContext"/> that this
            object runs in.
            </param>
        </member>
        <member name="M:YCH.Context.Support.ApplicationObjectSupport.InitApplicationContext">
            <summary>
            Intializes the wrapped
            <see cref="T:YCH.Context.IApplicationContext"/>.
            </summary>
            <remarks>
            <p>
            This is a template method that subclasses can override for custom
            initialization behavior.
            </p>
            <p>
            Gets called by the
            <see cref="P:YCH.Context.Support.ApplicationObjectSupport.ApplicationContext"/>
            instance directly after setting the context instance.
            </p>
            <note type="caution">
            Does not get called on reinitialization of the context.
            </note>
            </remarks>
            <exception cref="T:YCH.Context.ApplicationContextException">
            In the case of any initialization errors.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If thrown by application context methods.
            </exception>
        </member>
        <member name="P:YCH.Context.Support.ApplicationObjectSupport.RequiredType">
            <summary>
            The context class that any context passed to the
            <see cref="P:YCH.Context.Support.ApplicationObjectSupport.ApplicationContext"/>
            must be an instance of.
            </summary>
            <value>
            The <see cref="T:YCH.Context.IApplicationContext"/>
            <see cref="T:System.Type"/>.
            </value>
        </member>
        <member name="P:YCH.Context.Support.ApplicationObjectSupport.MessageSourceAccessor">
            <summary>
            Return a <see cref="T:YCH.Context.Support.MessageSourceAccessor"/> for the
            application context used by this object, for easy message access.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.ApplicationObjectSupport.ApplicationContext">
            <summary>
            Set the <see cref="T:YCH.Context.IApplicationContext"/> that this
            object runs in.
            </summary>
            <exception cref="T:YCH.Context.ApplicationContextException">
            When passed an unexpected
            <see cref="T:YCH.Context.IApplicationContext"/> implementation
            instance that is not compatible with the <see cref="T:System.Type"/>
            defined by the value of the
            <see cref="P:YCH.Context.Support.ApplicationObjectSupport.RequiredType"/>. 
            property. Also, thrown when trying to re-initialize with a
            different <see cref="T:YCH.Context.IApplicationContext"/> than was
            originally used.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If thrown by any application context methods.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectInitializationException"/>
            <seealso cref="P:YCH.Context.IApplicationContextAware.ApplicationContext"/>
        </member>
        <member name="T:YCH.Context.Support.ConfigParsersSectionHandler">
            <summary>
            Configuration section handler for the (recommended, YCH.NET standard) <c>parsers</c>
            config section.
            </summary>
            <remarks>
            <p>
            YCH.NET allows the registration of custom configuration parsers that
            can be used to create simplified configuration schemas that better
            describe object definitions.
            </p>
            <p>
            For example, YCH.NET uses this facility internally in order to
            define simplified schemas  for various AOP, Web and Services definitions.
            </p>
            </remarks>
            <example>
            <p>
            The following example shows how to configure both this section handler
            and how to define custom configuration parsers within a YCH.NET
            config section.
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="parsers" type="YCH.Context.Support.ConfigParsersSectionHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <parsers>
            		    <parser namespace="http://schemas.springframework.net/aop" type="YCH.Aop.Support.AopConfigParser, Spring.Aop"/>
            		    <parser namespace="http://schemas.springframework.net/web" type="YCH.Web.Support.WebConfigParser, Spring.Web"/>
            		    ...
            	    </parsers>
            	    ...
                </spring>
            </configuration>
            </code>
            </example>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConfigParsersSectionHandler.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Xml.XmlParserRegistry"/>
        </member>
        <member name="M:YCH.Context.Support.ConfigParsersSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Registers parsers specified in the (recommended, YCH.NET standard)
            <c>parsers</c> config section with the <see cref="T:YCH.Objects.Factory.Xml.XmlParserRegistry"/>.
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            This method always returns <see langword="null"/>, because parsers
            are registered as a side-effect of this object's execution and there
            is thus no need to return anything.
            </returns>
        </member>
        <member name="T:YCH.Context.Support.ContextHandler">
            <summary>
            Creates an <see cref="T:YCH.Context.IApplicationContext"/> instance
            using context definitions supplied in a custom configuration and
            configures the <see cref="T:YCH.Context.Support.ContextRegistry"/> with that instance.
            </summary>
            <remarks>
            Implementations of the <see cref="T:YCH.Context.IApplicationContext"/>
            interface <b>must</b> provide the following two constructors:
            <list type="number">
            <item>
            <description>
            A constructor that takes a string array of resource locations.
            </description>
            </item>
            <item>
            <description>
            A constructor that takes a reference to a parent application context
            and a string array of resource locations (and in that order).
            </description>
            </item>
            </list>
            <p>
            Note that if the <c>type</c> attribute is not present in the declaration
            of a particular context, then a default
            <see cref="T:YCH.Context.IApplicationContext"/> <see cref="T:System.Type"/>
            is assumed. This default
            <see cref="T:YCH.Context.IApplicationContext"/> <see cref="T:System.Type"/>
            is currently the <see cref="T:YCH.Context.Support.XmlApplicationContext"/>
            <see cref="T:System.Type"/>; please note the exact <see cref="T:System.Type"/>
            of this default <see cref="T:YCH.Context.IApplicationContext"/> is an
            implementation detail, that, while unlikely, may do so in the future.
            to
            </p>
            </remarks>
            <example>
            <p>
            This is an example of specifying a context that reads its resources from
            an embedded YCH.NET XML object configuration file...
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="context" type="YCH.Context.Support.ContextHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <context>
            		    <resource uri="assembly://MyAssemblyName/MyResourceNamespace/MyObjects.xml"/>
            	    </context>
                </spring>
            </configuration>
            </code>
            <p>
            This is an example of specifying a context that reads its resources from
            a custom configuration section within the same application / web
            configuration file and uses case insensitive object lookups. 
            </p>
            <p>
            Please note that you <b>must</b> adhere to the naming
            of the various sections (i.e. '&lt;sectionGroup name="spring"&gt;' and
            '&lt;section name="context"&gt;'.
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="context" type="YCH.Context.Support.ContextHandler, YCH.Core"/>
            		    <section name="objects" type="YCH.Context.Support.DefaultSectionHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <context caseSensitive="false" type="YCH.Context.Support.XmlApplicationContext, YCH.Core">
            		    <resource uri="config://spring/objects"/>
            	    </context>
            	    <objects xmlns="http://www.springframework.net">
            		    <!-- object definitions... -->
            	    </objects>
                </spring>
            </configuration>
            </code>
            <p>
            And this is an example of specifying a hierarchy of contexts. The
            hierarchy in this case is only a simple parent-&gt;child hierarchy, but
            hopefully it illustrates the nesting of context configurations. This
            nesting of contexts can be arbitrarily deep, and is one way... child
            contexts know about their parent contexts, but parent contexts do not
            know how many child contexts they have (if any), or have references
            to any such child contexts.
            </p>
            <code escaped="true">
            <configuration>
            	<configSections>
            		<sectionGroup name="spring">
            			<section name="context" type="YCH.Context.Support.ContextHandler, YCH.Core"/>
            			<section name="objects" type="YCH.Context.Support.DefaultSectionHandler, YCH.Core"/>
            			<section name="childObjects" type="YCH.Context.Support.DefaultSectionHandler, YCH.Core"/>
            		</sectionGroup>
            	</configSections>
            	
                <spring>
            		<context name="Parent">
            			<resource uri="config://spring/objects"/>
            		    <context name="Child">
            			    <resource uri="config://spring/childObjects"/>
            		    </context>
            		</context>
            		<!-- parent context's objects -->
            		<objects xmlns="http://www.springframework.net">
            			<object id="Parent" type="YCH.Objects.TestObject,YCH.Core.Tests">
                            <property name="name" value="Parent"/>
                        </object>
            		</objects>
            		<!-- child context's objects -->
            		<childObjects xmlns="http://www.springframework.net">
            			<object id="Child" type="YCH.Objects.TestObject,YCH.Core.Tests">
                            <property name="name" value="Child"/>
                        </object>
            		</childObjects>
                </spring>
            </configuration>
            </code>
            </example>
            <author>Mark Pollack</author>
            <author>Aleksandar Seovic</author>
            <author>Rick Evans</author>
            <version>$Id: ContextHandler.cs,v 1.16 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.Support.ContextRegistry"/>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.DefaultApplicationContextType">
            <summary>
            The <see cref="T:System.Type"/> of <see cref="T:YCH.Context.IApplicationContext"/>
            created if no <c>type</c> attribute is specified on a <c>context</c> element.
            </summary>
            <seealso cref="P:YCH.Context.Support.ContextHandler.ContextType"/>
        </member>
        <member name="M:YCH.Context.Support.ContextHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Creates an <see cref="T:YCH.Context.IApplicationContext"/> instance
            using the context definitions supplied in a custom
            configuration section.
            </summary>
            <remarks>
            <p>
            This <see cref="T:YCH.Context.IApplicationContext"/> instance is
            also used to configure the <see cref="T:YCH.Context.Support.ContextRegistry"/>.
            </p>
            </remarks>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            An <see cref="T:YCH.Context.IApplicationContext"/> instance
            populated with the object definitions supplied in the configuration
            section.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.ContextHandler.GetResources">
            <summary>
            Returns the array of resources containing object definitions for
            this context.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.ContextHandler.ContextElement">
            <summary>
            The <see cref="T:System.Xml.XmlElement"/> for the current context.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.ContextHandler.ContextType">
            <summary>
            Gets the context <see cref="T:System.Type"/> specified in the type
            attribute of the context element.
            </summary>
            <remarks>
            <p>
            If this attribute is not defined it defaults to the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> type.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.TypeMismatchException">
            If the context type does not implement the
            <see cref="T:YCH.Context.IApplicationContext"/> interface.
            </exception>
        </member>
        <member name="P:YCH.Context.Support.ContextHandler.IsLazy">
            <summary>
            Returns <see langword="true"/> if the context should be lazily
            initialized.
            </summary>
        </member>
        <member name="T:YCH.Context.Support.ContextHandler.ContextSchema">
            <summary>
            Constants defining the structure and values associated with the
            schema for laying out YCH.NET contexts in XML.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.ContextElement">
            <summary>
            Defines a single
            <see cref="T:YCH.Context.IApplicationContext"/>.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.NameAttribute">
            <summary>
            Specifies a context name.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.CaseSensitiveAttribute">
            <summary>
            Specifies if context should be case sensitive or not. Default is <c>true</c>.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.TypeAttribute">
            <summary>
            Specifies a <see cref="T:System.Type"/>.
            </summary>
            <remarks>
            <p>
            Does not have to be fully assembly qualified, but its generally regarded
            as better form if the <see cref="T:System.Type"/> names of one's objects
            are specified explicitly.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.LazyAttribute">
            <summary>
            Specifies whether context should be lazy initialized.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.ResourceElement">
            <summary>
            Defines an <see cref="T:YCH.Core.IO.IResource"/>
            </summary>
        </member>
        <member name="F:YCH.Context.Support.ContextHandler.ContextSchema.URIAttribute">
            <summary>
            Specifies the URI for an
            <see cref="T:YCH.Core.IO.IResource"/>.
            </summary>
        </member>
        <member name="T:YCH.Context.Support.ContextRegistry">
            <summary> 
            Provides access to a central registry of 
            <see cref="T:YCH.Context.IApplicationContext"/>s.
            </summary>
            <remarks>
            <p>
            Simplifies access to to one or more application contexts.
            </p>
            </remarks>
            <author>Mark Pollack</author>
            <author>Aleksandar Seovic</author>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
            <version>$Id: ContextRegistry.cs,v 1.18 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.ContextRegistry.#ctor">
            <summary>
            Creates a new instance of the ContextRegistry class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly visible
            constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.ContextRegistry.RegisterContext(YCH.Context.IApplicationContext)">
            <summary> 
            Registers an instance of an
            <see cref="T:YCH.Context.IApplicationContext"/>. 
            </summary> 
            <remarks>
            <p>
            This is usually called via a
            <see cref="T:YCH.Context.Support.ContextHandler"/> inside a .NET
            application configuration file. 
            </p>
            </remarks>
            <param name="context">The application context to be registered.</param>
            <exception cref="T:YCH.Context.ApplicationContextException">
            If a context has previously been registered using the same name
            </exception>
        </member>
        <member name="M:YCH.Context.Support.ContextRegistry.GetContext(System.String)">
            <summary>
            Returns context based on specified name.
            </summary>
            <param name="name">The context name.</param>
            <returns>The specified context, or null, if context with that name doesn't exists.</returns>
            <exception cref="T:System.ArgumentException">
            If the context name is null or empty
            </exception>
        </member>
        <member name="M:YCH.Context.Support.ContextRegistry.Clear">
            <summary>
            Removes all registered
            <see cref="T:YCH.Context.IApplicationContext"/>s from this
            registry.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.ContextRegistry.GetContext">
            <summary>
            Returns the root application context.
            </summary>
            <remarks>
            <p>
            The first call
            to GetContext will create the context as specified in
            the .NET application configuration file under the
            location spring/context.
            </p>
            </remarks>
            <returns>The root application context.</returns>
        </member>
        <member name="P:YCH.Context.Support.ContextRegistry.SyncRoot">
            <summary>
            Gets an object that should be used to synchronize access to ContextRegistry
            from the calling code.
            </summary>
        </member>
        <member name="T:YCH.Context.Support.DefaultMessageSourceResolvable">
            <summary>
            Default implementation of the
            <see cref="T:YCH.Context.IMessageSourceResolvable"/> interface.
            </summary>
            <remarks>
            <p>
            Provides easy ways to store all the necessary values needed to resolve
            messages from an <see cref="T:YCH.Context.IMessageSource"/>.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: DefaultMessageSourceResolvable.cs,v 1.3 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)"/>
        </member>
        <member name="T:YCH.Context.IMessageSourceResolvable">
            <summary>
            Describes objects that are suitable for message resolution in a
            <see cref="T:YCH.Context.IMessageSource"/>.
            </summary>
            <remarks>
            <p>
            YCH.NET's own validation error classes implement this interface.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IMessageSourceResolvable.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)"/>
            <seealso cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/>
        </member>
        <member name="M:YCH.Context.IMessageSourceResolvable.GetCodes">
            <summary>
            Return the codes to be used to resolve this message, in the order
            that they are to be tried.
            </summary>
            <remarks>
            <p>
            The last code will therefore be the default one.
            </p>
            </remarks>
            <returns>
            A <see cref="T:System.String"/> array of codes which are associated
            with this message.
            </returns>
        </member>
        <member name="M:YCH.Context.IMessageSourceResolvable.GetArguments">
            <summary>
            Return the array of arguments to be used to resolve this message.
            </summary>
            <returns>
            An array of objects to be used as parameters to replace
            placeholders within the message text.
            </returns>
        </member>
        <member name="P:YCH.Context.IMessageSourceResolvable.DefaultMessage">
            <summary>
            Return the default message to be used to resolve this message.
            </summary>
            <returns>
            The default message, or <see langword="null"/> if there is no
            default.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/> class
            using a single code.
            </summary>
            <param name="code">The message code to be resolved.</param>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.#ctor(System.String[],System.Object[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/> class
            using multiple codes.
            </summary>
            <param name="codes">The message codes to be resolved.</param>
            <param name="arguments">
            The arguments used to resolve the supplied <paramref name="codes"/>.
            </param>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.#ctor(System.String[],System.Object[],System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/> class
            using multiple codes and a default message.
            </summary>
            <param name="codes">The message codes to be resolved.</param>
            <param name="arguments">
            The arguments used to resolve the supplied <paramref name="codes"/>.
            </param>
            <param name="defaultMessage">
            The default message used if no code could be resolved.
            </param>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.#ctor(YCH.Context.IMessageSourceResolvable)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/> class
            from another resolvable.
            </summary>
            <remarks>
            <p>
            This is the <i>copy constructor</i> for the
            <see cref="T:YCH.Context.Support.DefaultMessageSourceResolvable"/> class.
            </p>
            </remarks>
            <param name="resolvable">
            The <see cref="T:YCH.Context.IMessageSourceResolvable"/> to be copied.
            </param>
            <exception cref="T:System.NullReferenceException">
            If the supplied <paramref name="resolvable"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> representation of this
            <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> representation of this
            <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.Accept(YCH.Context.Support.MessageSourceResolvableVisitor)">
            <summary>
            Calls the visit method on the supplied <paramref name="visitor"/>
            to output a <see cref="T:System.String"/> version of this class.
            </summary>
            <param name="visitor">The visitor to use.</param>
            <returns>
            A <see cref="T:System.String"/> representation of this
            <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.GetCodes">
            <summary>
            Return the codes to be used to resolve this message, in the order
            that they are to be tried.
            </summary>
            <returns>
            A <see cref="T:System.String"/> array of codes which are associated
            with this message.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSourceResolvable.GetCodes"/>
        </member>
        <member name="M:YCH.Context.Support.DefaultMessageSourceResolvable.GetArguments">
            <summary>
            Return the array of arguments to be used to resolve this message.
            </summary>
            <returns>
            An array of objects to be used as parameters to replace
            placeholders within the message text.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSourceResolvable.GetArguments"/>
        </member>
        <member name="P:YCH.Context.Support.DefaultMessageSourceResolvable.LastCode">
            <summary>
            Return the default code for this resolvable.
            </summary>
            <returns>
            The default code of this resolvable; this will be the last code in
            the codes array, or <see langword="null"/> if this instance has no
            codes.
            </returns>
            <seealso cref="M:YCH.Context.Support.DefaultMessageSourceResolvable.GetCodes"/>
        </member>
        <member name="P:YCH.Context.Support.DefaultMessageSourceResolvable.DefaultMessage">
            <summary>
            Return the default message to be used to resolve this message.
            </summary>
            <returns>
            The default message, or <see langword="null"/> if there is no
            default.
            </returns>
            <seealso cref="P:YCH.Context.IMessageSourceResolvable.DefaultMessage"/>
        </member>
        <member name="T:YCH.Context.Support.DefaultSectionHandler">
            <summary>
            Default section handler that can handle any configuration section.
            </summary>
            <remarks>
            <p>
            Simply returns the configuration section as an <see cref="T:System.Xml.XmlElement"/>.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: DefaultSectionHandler.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.DefaultSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Returns the configuration section as an <see cref="T:System.Xml.XmlElement"/>
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is a null reference.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>Config section as XmlElement.</returns>
        </member>
        <member name="T:YCH.Context.Support.DelegatingMessageSource">
            <summary>
            Empty <see cref="T:YCH.Context.IMessageSource"/> implementation that
            simply delegates all method calls to it's parent
            <see cref="T:YCH.Context.IMessageSource"/>.
            </summary>
            <remarks>
            <p>
            If no parent <see cref="T:YCH.Context.IMessageSource"/> is available,
            no messages will be resolved (and a
            <see cref="T:YCH.Context.NoSuchMessageException"/> will be thrown).
            </p>
            <p>
            Used as placeholder <see cref="T:YCH.Context.IMessageSource"/> by the
            <see cref="T:YCH.Context.Support.AbstractApplicationContext"/> class,
            if the context definition doesn't define its own
            <see cref="T:YCH.Context.IMessageSource"/>. Not intended for direct use
            in applications.
            </p>
            </remarks>
            <author>Juergan Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: DelegatingMessageSource.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.Support.AbstractApplicationContext"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DelegatingMessageSource"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.#ctor(YCH.Context.IMessageSource)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.DelegatingMessageSource"/> class.
            </summary>
            <param name="parentMessageSource">
            The parent message source used to try and resolve messages that
            this object can't resolve.
            </param>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetMessage(System.String)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetMessage(System.String,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])">
            <summary>
            Resolve the message identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">The name of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <param name="arguments">
            The array of arguments that will be filled in for parameters within
            the message, or <see langword="null"/> if there are no parameters
            within the message. Parameters within a message should be
            referenced using the same syntax as the format string for the
            <see cref="M:System.String.Format(System.String,System.Object[])"/> method.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)">
            <summary>
            Resolve the message using all of the attributes contained within
            the supplied <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            argument.
            </summary>
            <param name="resolvable">
            The value object storing those attributes that are required to
            properly resolve a message.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that represents
            the culture for which the resource is localized.
            </param>
            <returns>
            The resolved message if the lookup was successful (see above for
            the return value in the case of an unsuccessful lookup).
            </returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be resolved.
            </exception>
            <seealso cref="M:YCH.Context.IMessageSource.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetResourceObject(System.String)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String)"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Gets a localized resource object identified by the supplied
            <paramref name="name"/>.
            </summary>
            <param name="name">
            The name of the resource object to resolve.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <returns>
            The resolved object, or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.IMessageSource.GetResourceObject(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.DelegatingMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <seealso cref="M:YCH.Context.IMessageSource.ApplyResources(System.Object,System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="P:YCH.Context.Support.DelegatingMessageSource.ParentMessageSource">
            <summary>
            The parent message source used to try and resolve messages that
            this object can't resolve.
            </summary>
            <seealso cref="P:YCH.Context.IHierarchicalMessageSource.ParentMessageSource"/>
        </member>
        <member name="T:YCH.Context.Support.MessageSourceAccessor">
            <summary>
            Helper class for easy access to messages from an
            <see cref="T:YCH.Context.IMessageSource"/>, providing various
            overloaded <c>GetMessage</c> methods.
            </summary>
            <remarks>
            <p>
            Available from
            <see cref="T:YCH.Context.Support.ApplicationObjectSupport"/>, but also
            reusable as a standalone helper to delegate to in application objects.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: MessageSourceAccessor.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.IMessageSource"/>
            <seealso cref="T:YCH.Context.Support.ApplicationObjectSupport"/>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.#ctor(YCH.Context.IMessageSource)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.MessageSourceAccessor"/> class
            that uses the current <see cref="P:System.Globalization.CultureInfo.CurrentUICulture"/>
            for all locale specific lookups.
            </summary>
            <param name="messageSource">
            The <see cref="T:YCH.Context.IMessageSource"/> to use to locate messages.
            </param>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.#ctor(YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.MessageSourceAccessor"/> class
            </summary>
            <param name="messageSource">
            The <see cref="T:YCH.Context.IMessageSource"/> to use to locate
            messages.
            </param>
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for
            locale specific messages.
            </param>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(System.String)">
            <summary>
            Retrieve the message for the given code and the default
            <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="code">The code of the message.</param>
            <returns>The message.</returns>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Retrieve the message for the given code and the given
            <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="code">The code of the message.</param>       
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for
            lookups.
            </param>
            <returns>The message.</returns>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(System.String,System.Object[])">
            <summary>
            Retrieve the message for the given code and the default
            <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="code">The code of the message.</param>
            <param name="args">
            The arguments for the message, or <see langword="null"/> if none.
            </param>
            <returns>The message.</returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be found.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(System.String,System.Globalization.CultureInfo,System.Object[])">
            <summary>
            Retrieve the message for the given code and the given
            <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="code">The code of the message.</param>      
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for
            lookups.
            </param>
            <param name="args">
            The arguments for the message, or <see langword="null"/> if none.
            </param>
            <returns>The message.</returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be found.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(YCH.Context.IMessageSourceResolvable)">
            <summary>
            Retrieve a mesage using the given
            <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </summary>
            <param name="resolvable">
            The <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </param>
            <returns>The message.</returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be found.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceAccessor.GetMessage(YCH.Context.IMessageSourceResolvable,System.Globalization.CultureInfo)">
            <summary>
            Retrieve a mesage using the given
            <see cref="T:YCH.Context.IMessageSourceResolvable"/> in the given
            <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="resolvable">
            The <see cref="T:YCH.Context.IMessageSourceResolvable"/>.
            </param>     
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for
            lookups.
            </param>
            <returns>The message</returns>
            <exception cref="T:YCH.Context.NoSuchMessageException">
            If the message could not be found.
            </exception>
        </member>
        <member name="T:YCH.Context.Support.MessageSourceResolvableVisitor">
            <summary>
            Visitor class to represent
            <see cref="T:YCH.Context.IMessageSourceResolvable"/> instances.
            </summary>
            <remarks>
            <p>
            Used in the first instance to supply stringified versions of
            <see cref="T:YCH.Context.IMessageSourceResolvable"/> instances. 
            </p>
            <p>
            Other methods can be added here to return different representations,
            including XML, CSV, etc..
            </p>
            </remarks>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: MessageSourceResolvableVisitor.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceResolvableVisitor.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.MessageSourceResolvableVisitor"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.MessageSourceResolvableVisitor.VisitMessageSourceResolvableString(YCH.Context.IMessageSourceResolvable)">
            <summary>
            Outputs the supplied <see cref="T:YCH.Context.IMessageSourceResolvable"/>
            as a nicely formatted <see cref="T:System.String"/>.
            </summary>
            <param name="resolvable">
            The <see cref="T:YCH.Context.IMessageSourceResolvable"/> to output.
            </param>
        </member>
        <member name="T:YCH.Context.Support.NullMessageSource">
            <summary>
            An <see cref="T:YCH.Context.IMessageSource"/> that doesn't do a whole lot.
            </summary>
            <remarks>
            <p>
            <see cref="T:YCH.Context.Support.NullMessageSource"/> is an implementation of
            the <c>NullObject</c> pattern. It should be used in those situations where a
            <see cref="T:YCH.Context.IMessageSource"/> needs to be passed (say to a
            method) but where the resolution of messages is not required.
            </p>
            <p>
            There should not (typically) be a need to instantiate instances of this class;
            <see cref="T:YCH.Context.Support.NullMessageSource"/> does not maintan any state
            and the <see cref="F:YCH.Context.Support.NullMessageSource.Null"/> instance is
            thus safe to pass around. 
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: NullMessageSource.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Context.Support.NullMessageSource.Null">
            <summary>
            The canonical instance of the
            <see cref="T:YCH.Context.Support.NullMessageSource"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.NullMessageSource.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Context.Support.NullMessageSource"/> class.
            </summary>
            <remarks>
            <p>
            Consider using <see cref="F:YCH.Context.Support.NullMessageSource.Null"/>
            instead.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.NullMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Simply returns the supplied message <paramref name="code"/> as-is.
            </summary>
            <param name="code">The code of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            The supplied message <paramref name="code"/> as-is.
            </returns>
        </member>
        <member name="M:YCH.Context.Support.NullMessageSource.ResolveObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Always returns <see lang="null"/>.
            </summary>
            <param name="code">The code of the object to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            <see lang="null"/> (always).
            </returns>
        </member>
        <member name="M:YCH.Context.Support.NullMessageSource.ApplyResourcesToObject(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Does nothing.
            </summary>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
        </member>
        <member name="T:YCH.Context.Support.ResourceSetMessageSource">
            <summary>
            An <see cref="T:YCH.Context.IMessageSource"/> implementation that
            accesses resources from .resx / .resource files.
            </summary>
            <remarks>Note that for the method 
            GetResourceObject if the resource name resolves to null, then in 
            .NET 1.1 the return value will be String.Empty whereas 
            in .NET 2.0 it will return null.</remarks>
            <author>Griffin Caprio (.NET)</author>
            <author>Mark Pollack (.NET)</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: ResourceSetMessageSource.cs,v 1.22 2006/04/20 23:42:23 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IInitializingObject">
            <summary>
            Defines a simple initialization callback for objects that need to to some
            post-initialization logic after all of their dependencies have been injected.
            </summary>
            <remarks>
            <p>
            An implementation of the
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method might perform some additional custom initialization (over and above that
            performed by the constructor), or merely check that all mandatory properties
            have been set (this last example is a very typical use case of this interface).
            </p>
            <note>
            The use of the
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/> interface
            by non-YCH.NET framework code can be avoided (and is generally
            discouraged). The YCH.NET container provides support for a generic
            initialization method given to the object definition in the object
            configuration store (be it XML, or a database, etc). This requires
            slightly more configuration (one attribute-value pair in the case of
            XML configuration), but removes any dependency on YCH.NET from the
            class definition.
            </note>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IInitializingObject.cs,v 1.8 2006/04/09 07:18:48 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.IObjectFactory"/>
        </member>
        <member name="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has injected all of an object's dependencies.
            </summary>
            <remarks>
            <p>
            This method allows the object instance to perform the kind of
            initialization only possible when all of it's dependencies have
            been injected (set), and to throw an appropriate exception in the
            event of misconfiguration.
            </p>
            <p>
            Please do consult the class level documentation for the
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> interface for a
            description of exactly <i>when</i> this method is invoked. In
            particular, it is worth noting that the
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            and <see cref="T:YCH.Context.IApplicationContextAware"/>
            callbacks will have been invoked <i>prior</i> to this method being
            called.
            </p>
            </remarks>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as the failure to set a
            required property) or if initialization fails.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.ResourceSetMessageSource"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolves a given code by searching through each assembly name in
            the base names array.
            </summary>
            <param name="code">The code to resolve.</param>      
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for lookups.
            </param>
            <returns>The message from the resource set.</returns>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.ResolveObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolves a given code by searching through each assembly name in the array.
            </summary>
            <param name="code">The code to resolve.</param>      
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for lookups.
            </param>
            <returns>The object from the resource set.</returns>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.ApplyResourcesToObject(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Uses a System.ComponentModel.ComponentResourceManager
            to apply resources to object properties.
            Resource key names are of the form objectName.propertyName
            </summary>
            <remarks>
            This feature is not currently supported on version 1.0 of the .NET platform.
            </remarks>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for the key lookup.
            </param>      
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for lookups.
            If <cref lang="null"/>, uses the
            <see cref="P:System.Globalization.CultureInfo.CurrentUICulture"/> value.
            </param>
            <exception cref="T:System.NotSupportedException">
            This feature is not currently supported on version 1.0 of the .NET platform.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.ResolveObject(System.Resources.ResourceManager,System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolves a code into an object given a base name.
            </summary>
            <param name="resourceManager">The <see cref="T:System.Resources.ResourceManager"/> to search.</param>
            <param name="code">The code to resolve.</param>      
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> to use for lookups.
            </param>
            <returns>The object from the resource file.</returns>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> representation of the
            <see cref="T:YCH.Context.Support.ResourceSetMessageSource"/>.
            </summary>
            <returns>A <see cref="T:System.String"/> representation of the
            <see cref="T:YCH.Context.Support.ResourceSetMessageSource"/>.</returns>
        </member>
        <member name="M:YCH.Context.Support.ResourceSetMessageSource.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all object properties supplied.
            </summary>
            <remarks>
            <p>
            The list may contain objects of type <see cref="T:System.String"/> or
            <see cref="T:System.Resources.ResourceManager"/>. <see cref="T:System.String"/> types
            are converted to <see cref="T:System.Resources.ResourceManager"/> instances using the notation
            resourcename, assembly partial name.
            </p>
            </remarks>
            <exception cref="T:System.ArgumentException">
            If the conversion from a <see cref="T:System.String"/> to a
            <see cref="T:System.Resources.ResourceManager"/> can't be performed.
            </exception>
        </member>
        <member name="P:YCH.Context.Support.ResourceSetMessageSource.ResourceManagers">
            <summary>
            The collection of <see cref="T:System.Resources.ResourceManager"/>s
            in this <see cref="T:YCH.Context.Support.ResourceSetMessageSource"/>.
            </summary>
        </member>
        <member name="T:YCH.Context.Support.ResourcesSectionHandler">
            <summary>
            Handler for YCH.NET <c>resources</c> config section.
            </summary>
            <remarks>
            <p>
            Spring allows registration of custom resource handlers that can be used to load
            object definitions from.
            </p>
            <p>
            For example, if you wanted to store your object definitions in a database instead
            of in the config file, you could write a custom <see cref="T:YCH.Core.IO.IResource"/> implementation
            and register it with Spring using 'db' as a protocol name.
            </p>
            <p>
            Afterwards, you would simply specify resource URI within the <c>context</c> config element
            using your custom resource handler.
            </p>
            </remarks>
            <example>
            <p>
            The following example shows how to configure both this section handler,
            how to define custom resource within Spring config section, and how to load
            object definitions using custom resource handler:
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="resources" type="YCH.Context.Support.ResourcesSectionHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <resources>
            		    <resource protocol="db" type="MyCompany.MyApp.Resources.MyDbResource, MyAssembly"/>
            	    </resources>
            	    <context>
            	        <resource uri="db://user:pass@dbName/MyDefinitionsTable"/>
            	    </context>
                </spring>
            </configuration>
            </code>
            </example>
            <author>Aleksandar Seovic</author>
            <version>$Id: ResourcesSectionHandler.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
        </member>
        <member name="M:YCH.Context.Support.ResourcesSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Registers resource handlers that are specified in
            the <c>resources</c> config section with the <see cref="T:YCH.Core.IO.ResourceHandlerRegistry"/>.
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section. Ignored.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            This method always returns <c>null</c>, because resource handlers are registered
            as a sideffect of its execution and there is no need to return anything.
            </returns>
        </member>
        <member name="T:YCH.Context.Support.StaticApplicationContext">
            <summary>
            <see cref="T:YCH.Context.IApplicationContext"/> that allows concrete registration of
            objects and messages in code, rather than from external configuration sources.
            </summary>
            <remarks>
            <p>
            Mainly useful for testing.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: StaticApplicationContext.cs,v 1.8 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.#ctor">
            <summary>
            Creates a new instance of the StaticApplicationContext class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.#ctor(YCH.Context.IApplicationContext)">
            <summary>
            Creates a new instance of the StaticApplicationContext class.
            </summary>
            <param name="parentContext">The parent application context.</param>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.RefreshObjectFactory">
            <summary>
            Do nothing: we rely on callers to update our public methods.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.RegisterSingleton(System.String,System.Type,YCH.Objects.MutablePropertyValues)">
            <summary>
            Register a singleton object with the default object factory.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="classType">The <see cref="T:System.Type"/> of the object.</param>
            <param name="propertyValues">The property values for the singleton instance.</param>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.RegisterPrototype(System.String,System.Type,YCH.Objects.MutablePropertyValues)">
            <summary>
            Registers a prototype object with the default object factory.
            </summary>
            <param name="name">The name of the prototype object.</param>
            <param name="classType">The <see cref="T:System.Type"/> of the prototype object.</param>
            <param name="propertyValues">The property values for the prototype instance.</param>
        </member>
        <member name="M:YCH.Context.Support.StaticApplicationContext.AddMessage(System.String,System.Globalization.CultureInfo,System.String)">
            <summary>
            Associate the given message with the given code.
            </summary>
            <param name="code">The lookup code.</param>
            <param name="cultureInfo">
            The <see cref="T:System.Globalization.CultureInfo"/> that the message should be found within.
            </param>
            <param name="defaultMessage">The message associated with the lookup code.</param>
        </member>
        <member name="P:YCH.Context.Support.StaticApplicationContext.DefaultListableObjectFactory">
            <summary>
            The default <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/> implementation.
            </summary>
        </member>
        <member name="P:YCH.Context.Support.StaticApplicationContext.ObjectFactory">
            <summary>
            Return the internal object factory of this application context.
            </summary>
            <remarks>
            Can be used to access specific functionality of the factory.
            <note type="caution">
            This is just guaranteed to return a non-null instance
            <i>after</i> the context has been refreshed at least once.
            </note>
            <note type="caution">
            Do not use this to post-process the object factory; singletons
            will already have been instantiated before. Use a
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            to intercept the object factory setup process before objects get touched.
            </note>
            </remarks>
        </member>
        <member name="T:YCH.Context.Support.StaticMessageSource">
            <summary>
            Simple implementation of <see cref="T:YCH.Context.IMessageSource"/>
            that allows messages to be held in an object and added programmatically.
            </summary>
            <remarks>
            <p>
            Mainly useful for testing.
            </p>
            <p>
            This <see cref="T:YCH.Context.IMessageSource"/> supports internationalization.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <seealso cref="T:YCH.Context.Support.DelegatingMessageSource"/>
            <version>$Id: StaticMessageSource.cs,v 1.14 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.StaticMessageSource"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)">
            <summary>
            Returns a format string.
            </summary>
            <param name="code">The code of the message to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            A format string or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.Support.AbstractMessageSource.ResolveMessage(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.ResolveObject(System.String,System.Globalization.CultureInfo)">
            <summary>
            Resolves an object (typically an icon or bitmap).
            </summary>
            <param name="code">The code of the object to resolve.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <returns>
            The resolved object or <see langword="null"/> if not found.
            </returns>
            <seealso cref="M:YCH.Context.Support.AbstractMessageSource.ResolveObject(System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.ApplyResourcesToObject(System.Object,System.String,System.Globalization.CultureInfo)">
            <summary>
            Applies resources to object properties.
            </summary>
            <remarks>
            <p>
            Uses a System.ComponentModel.ComponentResourceManager
            internally to apply resources to object properties. Resource key
            names are of the form <c>objectName.propertyName</c>.
            </p>
            <p>
            This feature is not currently supported on version 1.0 of the .NET platform.
            </p>
            </remarks>
            <param name="value">
            An object that contains the property values to be applied.
            </param>
            <param name="objectName">
            The base name of the object to use for key lookup.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> with which the
            resource is associated.
            </param>
            <exception cref="T:System.NotSupportedException">
            This feature is not currently supported on version 1.0 of the .NET platform.
            </exception>
            <seealso cref="M:YCH.Context.Support.AbstractMessageSource.ApplyResourcesToObject(System.Object,System.String,System.Globalization.CultureInfo)"/>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.AddMessage(System.String,System.Globalization.CultureInfo,System.String)">
            <summary>
            Associate the supplied <paramref name="messageFormat"/> with the
            supplied <paramref name="code"/>.
            </summary>
            <param name="code">The lookup code.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <param name="messageFormat">
            The message format associated with this lookup code.
            </param>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.AddObject(System.String,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Associate the supplied <paramref name="value"/> with the
            supplied <paramref name="code"/>.
            </summary>
            <param name="code">The lookup code.</param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to resolve the
            code for.
            </param>
            <param name="value">
            The object associated with this lookup code.
            </param>
        </member>
        <member name="M:YCH.Context.Support.StaticMessageSource.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> representation of this
            message source.
            </summary>
            <returns>
            A <see cref="T:System.String"/> containing all of this message
            source's messages.
            </returns>
        </member>
        <member name="T:YCH.Context.Support.TypeAliasesSectionHandler">
            <summary>
            Configuration section handler for the YCH.NET <c>typeAliases</c>
            config section.
            </summary>
            <remarks>
            <p>
            Type aliases can be used instead of fully qualified type names anywhere
            a type name is expected in a YCH.NET configuration file.
            </p>
            <p>
            This includes type names specified within an object definition, as well
            as values of the properties or constructor arguments that expect
            <see cref="T:System.Type"/> instances.
            </p>
            </remarks>
            <example>
            <p>
            The following example shows how to configure both this section handler and
            how to define type aliases within a YCH.NET config section:
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="typeAliases" type="YCH.Context.Support.TypeAliasesSectionHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <typeAliases>
            		    <alias name="WebServiceExporter" type="YCH.Web.Services.WebServiceExporter, Spring.Web"/>
            		    <alias name="MyType" type="MyCompany.MyProject.MyNamespace.MyType, MyAssembly"/>
            		    ...
            	    </typeAliases>
            	    ...
                </spring>
            </configuration>
            </code>
            </example>
            <author>Aleksandar Seovic</author>
            <version>$Id: TypeAliasesSectionHandler.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.Support.TypeRegistry"/>
        </member>
        <member name="M:YCH.Context.Support.TypeAliasesSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Populates <see cref="T:YCH.Context.Support.TypeRegistry"/> using values specified in
            the <c>typeAliases</c> config section.
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            This method always returns <see langword="null"/>, because the
            <see cref="T:YCH.Context.Support.TypeRegistry"/> is populated as a side-effect of this
            object's execution and thus there is no need to return anything.
            </returns>
        </member>
        <member name="T:YCH.Context.Support.TypeConvertersSectionHandler">
            <summary>
            Configuration section handler for the YCH.NET <c>typeConverters</c>
            config section.
            </summary>
            <remarks>
            <p>
            Type converters are used to convert objects from one type into another
            when injecting property values, evaluating expressions, performing data
            binding, etc.
            </p>
            <p>
            They are a very powerful mechanism as they allow YCH.NET to automatically
            convert string-based property values from the configuration file into the appropriate
            type based on the target property's type or to convert string values submitted
            via a web form into a type that is used by your data model when YCH.NET data
            binding is used. Because they offer such tremendous help, you should always provide
            a type converter implementation for your custom types that you want to be able to use
            for injected properties or for data binding.
            </p>
            <p>
            The standard .NET mechanism for specifying type converter for a particular type is
            to decorate the type with a <see cref="T:System.ComponentModel.TypeConverterAttribute"/>, passing the type
            of the <see cref="T:System.ComponentModel.TypeConverter"/>-derived class as a parameter.
            </p>
            <p>
            This mechanism will still work and is a preferred way of defining type converters if
            you control the source code for the type that you want to define a converter for. However, 
            this configuration section allows you to specify converters for the types that you don't 
            control and it also allows you to override some of the standard type converters, such as
            the ones that are defined for some of the types in the .NET Base Class Library.
            </p>
            </remarks>
            <example>
            <p>
            The following example shows how to configure both this section handler and
            how to define type converters within a YCH.NET config section:
            </p>
            <code escaped="true">
            <configuration>
                <configSections>
            	    <sectionGroup name="spring">
            		    <section name="typeConverters" type="YCH.Context.Support.TypeConvertersSectionHandler, YCH.Core"/>
            	    </sectionGroup>
                </configSections>
                <spring>
            	    <typeConverters>
            		    <converter for="YCH.Expressions.IExpression, YCH.Core" type="YCH.Objects.TypeConverters.ExpressionConverter, YCH.Core"/>
            		    <converter for="MyTypeAlias" type="MyCompany.MyProject.Converters.MyTypeConverter, MyAssembly"/>
            		    ...
            	    </typeConverters>
            	    ...
                </spring>
            </configuration>
            </code>
            </example>
            <author>Aleksandar Seovic</author>
            <version>$Id: TypeConvertersSectionHandler.cs,v 1.3 2006/04/17 17:53:16 markpollack Exp $</version>
            <seealso cref="T:YCH.Context.Support.TypeRegistry"/>
        </member>
        <member name="M:YCH.Context.Support.TypeConvertersSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Populates <see cref="T:YCH.Objects.TypeConverters.TypeConverterRegistry"/> using values specified in
            the <c>typeConverters</c> config section.
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent
            configuration section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            This method always returns <see langword="null"/>, because the
            <see cref="T:YCH.Objects.TypeConverters.TypeConverterRegistry"/> is populated as a side-effect of 
            its execution and thus there is no need to return anything.
            </returns>
        </member>
        <member name="T:YCH.Context.Support.TypeRegistry">
            <summary> 
            Provides access to a central registry of aliased <see cref="T:System.Type"/>s.
            </summary>
            <remarks>
            <p>
            Simplifies configuration by allowing aliases to be used instead of
            fully qualified type names.
            </p>
            <p>
            Comes 'pre-loaded' with a number of convenience alias' for the more
            common types; an example would be the '<c>int</c>' (or '<c>Integer</c>'
            for Visual Basic.NET developers) alias for the <see cref="T:System.Int32"/>
            type.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <seealso cref="T:YCH.Context.Support.TypeAliasesSectionHandler"/>
            <version>$Id: TypeRegistry.cs,v 1.10 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int32Alias">
            <summary>
            The alias around the 'int' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int32AliasVB">
            <summary>
            The alias around the 'Integer' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int32ArrayAlias">
            <summary>
            The alias around the 'int[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int32ArrayAliasVB">
            <summary>
            The alias around the 'Integer()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DecimalAlias">
            <summary>
            The alias around the 'decimal' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DecimalAliasVB">
            <summary>
            The alias around the 'Decimal' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DecimalArrayAlias">
            <summary>
            The alias around the 'decimal[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DecimalArrayAliasVB">
            <summary>
            The alias around the 'Decimal()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.CharAlias">
            <summary>
            The alias around the 'char' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.CharAliasVB">
            <summary>
            The alias around the 'Char' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.CharArrayAlias">
            <summary>
            The alias around the 'char[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.CharArrayAliasVB">
            <summary>
            The alias around the 'Char()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int64Alias">
            <summary>
            The alias around the 'long' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int64AliasVB">
            <summary>
            The alias around the 'Long' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int64ArrayAlias">
            <summary>
            The alias around the 'long[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int64ArrayAliasVB">
            <summary>
            The alias around the 'Long()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int16Alias">
            <summary>
            The alias around the 'short' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int16AliasVB">
            <summary>
            The alias around the 'Short' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int16ArrayAlias">
            <summary>
            The alias around the 'short[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.Int16ArrayAliasVB">
            <summary>
            The alias around the 'Short()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt32Alias">
            <summary>
            The alias around the 'unsigned int' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt64Alias">
            <summary>
            The alias around the 'unsigned long' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt64ArrayAlias">
            <summary>
            The alias around the 'ulong[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt32ArrayAlias">
            <summary>
            The alias around the 'uint[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt16Alias">
            <summary>
            The alias around the 'unsigned short' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.UInt16ArrayAlias">
            <summary>
            The alias around the 'ushort[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DoubleAlias">
            <summary>
            The alias around the 'double' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DoubleAliasVB">
            <summary>
            The alias around the 'Double' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DoubleArrayAlias">
            <summary>
            The alias around the 'double[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DoubleArrayAliasVB">
            <summary>
            The alias around the 'Double()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.FloatAlias">
            <summary>
            The alias around the 'float' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.SingleAlias">
            <summary>
            The alias around the 'Single' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.FloatArrayAlias">
            <summary>
            The alias around the 'float[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.SingleArrayAliasVB">
            <summary>
            The alias around the 'Single()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateTimeAlias">
            <summary>
            The alias around the 'DateTime' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateAlias">
            <summary>
            The alias around the 'DateTime' type (C# style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateAliasVB">
            <summary>
            The alias around the 'DateTime' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateTimeArrayAlias">
            <summary>
            The alias around the 'DateTime[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateTimeArrayAliasCSharp">
            <summary>
            The alias around the 'DateTime[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.DateTimeArrayAliasVB">
            <summary>
            The alias around the 'DateTime()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.BoolAlias">
            <summary>
            The alias around the 'bool' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.BoolAliasVB">
            <summary>
            The alias around the 'Boolean' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.BoolArrayAlias">
            <summary>
            The alias around the 'bool[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.BoolArrayAliasVB">
            <summary>
            The alias around the 'Boolean()' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.StringAlias">
            <summary>
            The alias around the 'string' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.StringAliasVB">
            <summary>
            The alias around the 'string' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.StringArrayAlias">
            <summary>
            The alias around the 'string[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.StringArrayAliasVB">
            <summary>
            The alias around the 'string[]' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.ObjectAlias">
            <summary>
            The alias around the 'object' type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.ObjectAliasVB">
            <summary>
            The alias around the 'object' type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.ObjectArrayAlias">
            <summary>
            The alias around the 'object[]' array type.
            </summary>
        </member>
        <member name="F:YCH.Context.Support.TypeRegistry.ObjectArrayAliasVB">
            <summary>
            The alias around the 'object[]' array type (Visual Basic.NET style).
            </summary>
        </member>
        <member name="M:YCH.Context.Support.TypeRegistry.#ctor">
            <summary>
            Creates a new instance of the TypeRegistry class.
            </summary>
            <remarks>
            <p>
            This is a singleton class, and as such has no publicly visible
            constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Context.Support.TypeRegistry.RegisterType(System.String,System.String)">
            <summary> 
            Registers an alias for the specified <see cref="T:System.Type"/>. 
            </summary>
            <remarks>
            <p>
            This overload does eager resolution of the <see cref="T:System.Type"/>
            referred to by the <paramref name="typeName"/> parameter. It will throw a
            <see cref="T:System.TypeLoadException"/> if the <see cref="T:System.Type"/> referred
            to by the <paramref name="typeName"/> parameter cannot be resolved.
            </p>
            </remarks>
            <param name="alias">
            A string that will be used as an alias for the specified
            <see cref="T:System.Type"/>.
            </param>
            <param name="typeName">
            The (possibly partially assembly qualified) name of the
            <see cref="T:System.Type"/> to register the alias for.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied parameters is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
            <exception cref="T:System.TypeLoadException">
            If the <see cref="T:System.Type"/> referred to by the supplied
            <paramref name="typeName"/> cannot be loaded.
            </exception>
        </member>
        <member name="M:YCH.Context.Support.TypeRegistry.RegisterType(System.String,System.Type)">
            <summary> 
            Registers an alias for the supplied <see cref="T:System.Type"/>. 
            </summary> 
            <param name="alias">
            The alias for the supplied <see cref="T:System.Type"/>.
            </param>
            <param name="type">
            The <see cref="T:System.Type"/> to register the supplied <paramref name="alias"/> under.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="type"/> is <see langword="null"/>; or if
            the supplied <paramref name="alias"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Context.Support.TypeRegistry.ResolveType(System.String)">
            <summary> 
            Resolves the supplied <paramref name="alias"/> to a <see cref="T:System.Type"/>. 
            </summary> 
            <param name="alias">
            The alias to resolve.
            </param>
            <returns>
            The <see cref="T:System.Type"/> the supplied <paramref name="alias"/> was
            associated with, or <see lang="null"/> if no <see cref="T:System.Type"/> 
            was previously registered for the supplied <paramref name="alias"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="alias"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="T:YCH.Context.Support.XmlApplicationContext">
            <summary>
            An <see cref="T:YCH.Context.IApplicationContext"/> implementation that
            reads context definitions from XML based resources.
            </summary>
            <remarks>
            <p>
            Currently, the resources that are supported are the <c>file</c>,
            <c>http</c>, <c>ftp</c>, <c>config</c> and <c>assembly</c> resource
            types.
            </p>
            <p>
            You can provide custom implementations of the
            <see cref="T:YCH.Core.IO.IResource"/> interface and and register them
            with any <see cref="T:YCH.Context.IApplicationContext"/> that inherits
            from the
            <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>
            interface.
            </p>
            <note>
            In case of multiple config locations, later object definitions will
            override ones defined in previously loaded resources. This can be
            leveraged to deliberately override certain object definitions via an
            extra XML file.
            </note>
            </remarks>
            <example>
            <p>
            Find below some examples of instantiating an
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> using a
            variety of different XML resources.
            </p>
            <code language="C#">
            // an XmlApplicationContext that reads its object definitions from an
            //    XML file that has been embedded in an assembly...
            IApplicationContext context = new XmlApplicationContext
            	(
            		"assembly://AssemblyName/NameSpace/ResourceName"
            	);
            	
            // an XmlApplicationContext that reads its object definitions from a
            //    number of disparate XML resources...
            IApplicationContext context = new XmlApplicationContext
            	(
            		// from an XML file that has been embedded in an assembly...
            		"assembly://AssemblyName/NameSpace/ResourceName",
            		// and from a (relative) filesystem-based resource...
            		"file://Objects/services.xml",
            		// and from an App.config / Web.config resource...
            		"config://spring/objects"
            	);
            </code>
            </example>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Griffin Caprio (.NET)</author>
            <version>$Id: XmlApplicationContext.cs,v 1.13 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="T:YCH.Core.IO.IResourceLoader"/>
            <seealso cref="T:YCH.Core.IO.ConfigurableResourceLoader"/>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations.
            </summary>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(System.Boolean,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations.
            </summary>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(System.String,System.Boolean,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations.
            </summary>
            <param name="name">The application context name.</param>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(YCH.Context.IApplicationContext,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations,
            with the given <paramref name="parentContext"/>.
            </summary>
            <param name="parentContext">
            The parent context (may be <see langword="null"/>).
            </param>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(System.Boolean,YCH.Context.IApplicationContext,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations,
            with the given <paramref name="parentContext"/>.
            </summary>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="parentContext">
            The parent context (may be <see langword="null"/>).
            </param>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.#ctor(System.String,System.Boolean,YCH.Context.IApplicationContext,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.Support.XmlApplicationContext"/> class,
            loading the definitions from the supplied XML resource locations,
            with the given <paramref name="parentContext"/>.
            </summary>
            <param name="name">The application context name.</param>
            <param name="caseSensitive">Flag specifying whether to make this context case sensitive or not.</param>
            <param name="parentContext">
            The parent context (may be <see langword="null"/>).
            </param>
            <param name="configurationLocations">
            Any number of XML based object definition resource locations.
            </param>
        </member>
        <member name="M:YCH.Context.Support.XmlApplicationContext.GetConfigurationLocations">
            <summary>
            An array of resource locations, referring to the XML object
            definition files that this context is to be built with.
            </summary>
            <returns>
            An array of resource locations, or <see langword="null"/> if none.
            </returns>
            <seealso cref="M:YCH.Context.Support.AbstractXmlApplicationContext.GetConfigurationLocations"/>
        </member>
        <member name="T:YCH.Context.ApplicationContextException">
            <summary>Exception thrown during application context initialization.</summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: ApplicationContextException.cs,v 1.5 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.FatalObjectException">
            <summary>
            Thrown on an unrecoverable problem encountered in the
            objects namespace or sub-namespaces, e.g. bad class or field.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: FatalObjectException.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $
            </version>
        </member>
        <member name="T:YCH.Objects.ObjectsException">
            <summary>
            Superclass for all exceptions thrown in the Objects namespace and sub-namespaces.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: ObjectsException.cs,v 1.8 2006/04/09 07:18:49 markpollack Exp $
            </version>
        </member>
        <member name="M:YCH.Objects.ObjectsException.#ctor">
            <summary>Creates a new instance of the ObjectsException class.</summary>
        </member>
        <member name="M:YCH.Objects.ObjectsException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectsException class. with the specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.ObjectsException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectsException class with the specified message
            and root cause.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.ObjectsException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectsException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.FatalObjectException.#ctor">
            <summary>
            Creates a new instance of the FatalObjectException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.FatalObjectException.#ctor(System.String)">
            <summary>
            Creates a new instance of the FatalObjectException class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.FatalObjectException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the FatalObjectException class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.FatalObjectException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the FatalObjectException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Context.ApplicationContextException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.ApplicationContextException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.ApplicationContextException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.ApplicationContextException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Context.ApplicationContextException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.ApplicationContextException"/> class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Context.ApplicationContextException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.ApplicationContextException"/> class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="T:YCH.Context.EventListenerAttribute">
            <summary>
            Marks an interface as being an application event listener.
            </summary>
            <author>Griffin Caprio</author>
            <version>$Id: EventListenerAttribute.cs,v 1.5 2006/04/09 07:18:38 markpollack Exp $</version>
            <see cref="T:YCH.Context.IApplicationEventListener"/>
        </member>
        <member name="M:YCH.Context.EventListenerAttribute.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.EventListenerAttribute"/> class.
            </summary>
        </member>
        <member name="T:YCH.Context.ApplicationEventHandler">
            <summary>
            The callback for application events.
            </summary>
        </member>
        <member name="T:YCH.Context.IMessageSourceAware">
            <summary>
            To be implemented by any object that wishes to be notified
            of the <see cref="T:YCH.Context.IMessageSource"/> associated with it.
            </summary>
            <remarks>
            <p>
            In the current implementation, the
            <see cref="T:YCH.Context.IMessageSource"/> will typically be the
            associated <see cref="T:YCH.Context.IApplicationContext"/> that
            spawned the implementing object.
            </p>
            <p>
            The <see cref="T:YCH.Context.IMessageSource"/> can usually also be
            passed on as an object reference to arbitrary object properties or
            constructor arguments, because a
            <see cref="T:YCH.Context.IMessageSource"/> is typically defined as an
            object with the well known name <c>"messageSource"</c> in the
            associated application context.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IMessageSourceAware.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.IInitializingObject"/>
        </member>
        <member name="P:YCH.Context.IMessageSourceAware.MessageSource">
            <summary>
            Sets the <see cref="T:YCH.Context.IMessageSource"/> associated
            with this object.
            </summary>
            <remarks>
            <p>
            Invoked <b>after</b> population of normal object properties but
            <b>before</b> an initializing callback such as the
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method of the
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/> interface
            or a custom init-method.
            </p>
            <p>
            It is also invoked <b>before</b> the
            <see cref="P:YCH.Context.IApplicationContextAware.ApplicationContext"/>
            property of any
            <see cref="T:YCH.Context.IApplicationContextAware"/>
            implementation.
            </p>
            </remarks>
            <value>
            The <see cref="T:YCH.Context.IMessageSource"/> associated
            with this object.
            </value>
        </member>
        <member name="T:YCH.Context.IResourceLoaderAware">
            <summary>
            Interface to be implemented by any object that wishes to be notified
            of the <see cref="T:YCH.Core.IO.IResourceLoader"/> (typically the
            <see cref="T:YCH.Context.IApplicationContext"/>) that it runs in.
            </summary>
            <remarks>
            <p>
            Note that <see cref="T:YCH.Core.IO.IResource"/> dependencies can also
            be exposed as object properties of type
            <see cref="T:YCH.Core.IO.IResource"/>, populated via strings with
            automatic type conversion by the object factory. This obviates the
            need for implementing any callback interface just for the purpose of
            accessing a specific resource.
            </p>
            <p>
            You typically need an <see cref="T:YCH.Core.IO.IResourceLoader"/>
            when your application object has to access a variety of file resources
            whose names are calculated. A good strategy is to make the object use
            a default resource loader but still implement the
            <see cref="T:YCH.Context.IResourceLoaderAware"/> interface to allow
            for overriding when running in an
            <see cref="T:YCH.Context.IApplicationContext"/>.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IResourceLoaderAware.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
            <see cref="T:YCH.Context.IApplicationContextAware"/>
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/>
            <see cref="T:YCH.Core.IO.IResourceLoader"/>
        </member>
        <member name="P:YCH.Context.IResourceLoaderAware.ResourceLoader">
            <summary>
            Gets and sets the <see cref="T:YCH.Core.IO.IResourceLoader"/>
            that this object runs in.
            </summary>
            <remarks>
            <p>
            Invoked <b>after</b> population of normal objects properties but
            before an init callback such as
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s 
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            or a custom init-method. Invoked <b>before</b> setting 
            <see cref="T:YCH.Context.IApplicationContextAware"/>'s
            <see cref="P:YCH.Context.IApplicationContextAware.ApplicationContext"/>
            property.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Context.NoSuchMessageException">
            <summary>
            Thrown when a message cannot be resolved.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <seealso cref="T:YCH.Context.IMessageSource"/>
            <seealso cref="T:YCH.Context.IMessageSourceResolvable"/>
            <version>$Id: NoSuchMessageException.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Context.NoSuchMessageException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.NoSuchMessageException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Context.NoSuchMessageException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.NoSuchMessageException"/> class with the
            specified message.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Context.NoSuchMessageException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.NoSuchMessageException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being
            thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or
            destination.
            </param>
        </member>
        <member name="M:YCH.Context.NoSuchMessageException.#ctor(System.String,System.Globalization.CultureInfo)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.NoSuchMessageException"/> class.
            </summary>
            <param name="code">
            The code that could not be resolved for given culture.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> that was used
            to search for the code.
            </param>
        </member>
        <member name="M:YCH.Context.NoSuchMessageException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Context.NoSuchMessageException"/> class.
            </summary>
            <param name="code">
            The code that could not be resolved for the current culture.
            </param>
        </member>
        <member name="T:YCH.Core.IO.AbstractResource">
            <summary>
            Convenience base class for <see cref="T:YCH.Core.IO.IResource"/>
            implementations, pre-implementing typical behavior.
            </summary>
            <remarks>
            <p>
            The <see cref="P:YCH.Core.IO.AbstractResource.Exists"/> method will
            check whether a <see cref="T:System.IO.FileInfo"/> or
            <see cref="T:System.IO.Stream"/> can be opened;
            <see cref="P:YCH.Core.IO.AbstractResource.IsOpen"/> will always return
            <see langword="false"/>;
            <see cref="P:YCH.Core.IO.AbstractResource.Uri"/> and
            <see cref="P:YCH.Core.IO.AbstractResource.File"/> throw an exception;
            and <see cref="M:YCH.Core.IO.AbstractResource.ToString"/> will
            return the value of the
            <see cref="P:YCH.Core.IO.IResource.Description"/> property.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: AbstractResource.cs,v 1.17 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
        </member>
        <member name="T:YCH.Core.IO.IResource">
            <summary>
            The central abstraction for YCH.NET's access to resources such as
            <see cref="T:System.IO.Stream"/>s.
            </summary>
            <remarks>
            <p>
            This interface encapsulates a resource descriptor that abstracts away
            from the underlying type of resource; possible resource types include
            files, memory streams, and databases (this list is not exhaustive).
            </p>
            <p>
            A <see cref="T:System.IO.Stream"/> can definitely be opened and accessed
            for every such resource; if the resource exists in a physical form (for
            example, the resource is not an in-memory stream or one that has been
            extracted from an assembly or ZIP file), a <see cref="T:System.Uri"/> or
            <see cref="T:System.IO.FileInfo"/> can also be accessed. The actual
            behavior is implementation-specific.
            </p>
            <p>
            This interface, when used in tandem with the
            <see cref="T:YCH.Core.IO.IResourceLoader"/> interface, forms the backbone of
            YCH.NET's resource handling. Third party extensions or libraries
            that want to integrate external resources with YCH.NET's IoC
            container are encouraged expose such resources via this abstraction.
            </p>
            <p>
            Interfaces cannot obviously mandate implementation, but derived classes
            are <b>strongly</b> encouraged to expose a constructor that takes a
            single <see cref="T:System.String"/> as it's sole argument (see example).
            Exposing such a constructor will make your custom
            <see cref="T:YCH.Core.IO.IResource"/> implementation integrate nicely
            with the <see cref="T:YCH.Core.IO.ConfigurableResourceLoader"/> class.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IResource.cs,v 1.9 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResourceLoader"/>
            <seealso cref="T:YCH.Core.IO.ConfigurableResourceLoader"/>
        </member>
        <member name="T:YCH.Core.IO.IInputStreamSource">
            <summary>
            Simple interface for objects that are sources for
            <see cref="T:System.IO.Stream"/>s.
            </summary>
            <remarks>
            <p>
            This is the base interface for the abstraction encapsulated by
            YCH.NET's <see cref="T:YCH.Core.IO.IResource"/> interface.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IInputStreamSource.cs,v 1.8 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
        </member>
        <member name="P:YCH.Core.IO.IInputStreamSource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <remarks>
            <note type="caution">
            Clients of this interface must be aware that every access of this
            property will create a <i>fresh</i> <see cref="T:System.IO.Stream"/>;
            it is the responsibility of the calling code to close any such
            <see cref="T:System.IO.Stream"/>.
            </note>
            </remarks>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
        </member>
        <member name="M:YCH.Core.IO.IResource.CreateRelative(System.String)">
            <summary>
            Creates a resource relative to this resource.
            </summary>
            <param name="relativePath">
            The path (always resolved as relative to this resource).
            </param>
            <returns>
            The relative resource.
            </returns>
            <exception cref="T:System.IO.IOException">
            If the relative resource could not be created from the supplied
            path.
            </exception>
            <exception cref="T:System.NotSupportedException">
            If the resource does not support the notion of a relative path.
            </exception>
        </member>
        <member name="P:YCH.Core.IO.IResource.IsOpen">
            <summary>
            Does this resource represent a handle with an open stream?
            </summary>
            <remarks>
            <p>
            If <see langword="true"/>, the <see cref="T:System.IO.Stream"/>
            cannot be read multiple times, and must be read and then closed to
            avoid resource leaks.
            </p>
            <p>
            Will be <see langword="false"/> for all usual resource descriptors.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource represents a handle with an
            open stream.
            </value>
            <seealso cref="P:YCH.Core.IO.IInputStreamSource.InputStream"/>
        </member>
        <member name="P:YCH.Core.IO.IResource.Uri">
            <summary>
            Returns the <see cref="T:System.Uri"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            For safety, always check the value of the
            <see cref="P:YCH.Core.IO.IResource.Exists"/> property prior to
            accessing this property; resources that cannot be exposed as 
            a <see cref="T:System.Uri"/> will typically return
            <see langword="false"/> from a call to the
            <see cref="P:YCH.Core.IO.IResource.Exists"/> property.
            </p>
            </remarks>
            <value>
            The <see cref="T:System.Uri"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.IOException">
            If the resource is not available or cannot be exposed as a
            <see cref="T:System.Uri"/>.
            </exception>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
        </member>
        <member name="P:YCH.Core.IO.IResource.File">
            <summary>
            Returns a <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            For safety, always check the value of the
            <see cref="P:YCH.Core.IO.IResource.Exists"/> property prior to
            accessing this property; resources that cannot be exposed as 
            a <see cref="T:System.IO.FileInfo"/> will typically return
            <see langword="false"/> from a call to the
            <see cref="P:YCH.Core.IO.IResource.Exists"/> property.
            </p>
            </remarks>
            <value>
            The <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.IOException">
            If the resource is not available on a filesystem, or cannot be
            exposed as a <see cref="T:System.IO.FileInfo"/> handle.
            </exception>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
        </member>
        <member name="P:YCH.Core.IO.IResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <remarks>
            <p>
            The description is typically used for diagnostics and other such
            logging when working with the resource.
            </p>
            <p>
            Implementations are also encouraged to return this value from their
            <see cref="M:System.Object.ToString"/> method.
            </p>
            </remarks>
            <value>
            A description for this resource.
            </value>
        </member>
        <member name="P:YCH.Core.IO.IResource.Exists">
            <summary>
            Does this resource actually exist in physical form?
            </summary>
            <remarks>
            <p>
            An example of a resource that physically exists would be a
            file on a local filesystem. An example of a resource that does not
            physically exist would be an in-memory stream.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource actually exists in physical
            form (for example on a filesystem).
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
            <seealso cref="P:YCH.Core.IO.IResource.Uri"/>
        </member>
        <member name="F:YCH.Core.IO.AbstractResource.DefaultBasePathPlaceHolder">
            <summary>
            The default special character that denotes the base (home, or root)
            path.
            </summary>
            <remarks>
            <p>
            Will be resolved (by those <see cref="T:YCH.Core.IO.IResource"/>
            implementations that support it) to the home (or root) path for
            the specific <see cref="T:YCH.Core.IO.IResource"/> implementation.
            </p>
            <p>
            For example, in the case of a web application this will (probably)
            resolve to the virtual directory of said web application.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.AbstractResource"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.AbstractResource"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
            <param name="resourceName">
            A string representation of the resource.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="resourceName"/> is
            <see langword="null"/> or contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.GetResourceNameWithoutProtocol(System.String)">
            <summary>
            Strips any protocol name from the supplied
            <paramref name="resourceName"/>.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="resourceName"/> does not
            have any protocol associated with it, then the supplied
            <paramref name="resourceName"/> will be returned as-is.
            </p>
            </remarks>
            <example>
            <code language="C#">
            GetResourceNameWithoutProtocol("http://www.mycompany.com/resource.txt");
            	// returns www.mycompany.com/resource.txt
            </code>
            </example>
            <param name="resourceName">
            The name of the resource.
            </param>
            <returns>
            The name of the resource without the protocol name.
            </returns>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.ResolveResourceNameWithoutProtocol(System.String)">
            <summary>
            Resolves the supplied <paramref name="resourceName"/> to its value
            sans any leading protocol.
            </summary>
            <param name="resourceName">
            The name of the resource.
            </param>
            <returns>
            The name of the resource without the protocol name.
            </returns>
            <see cref="M:YCH.Core.IO.AbstractResource.GetResourceNameWithoutProtocol(System.String)"/>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.ResolveBasePathPlaceHolder(System.String,System.String)">
            <summary>
            Resolves the presence of the
            <paramref name="basePathPlaceHolder"/> value
            in the supplied <paramref name="resourceName"/> into a path.
            </summary>
            <remarks>
            <p>
            The default implementation simply returns the supplied
            <paramref name="resourceName"/> as is.
            </p>
            </remarks>
            <param name="resourceName">
            The name of the resource.
            </param>
            <param name="basePathPlaceHolder">
            The string that is a placeholder for a base path.
            </param>
            <returns>
            The name of the resource with any <paramref name="basePathPlaceHolder"/>
            value having been resolved into an actual path.
            </returns>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.ToString">
            <summary>
            This implementation returns the
            <see cref="P:YCH.Core.IO.AbstractResource.Description"/> of this resource.
            </summary>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is
            equal to the current <see cref="T:System.Object"/>.
            </summary>
            <remarks>
            <p>
            This implementation compares <see cref="P:YCH.Core.IO.AbstractResource.Description"/> values.
            </p>
            </remarks>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.GetHashCode">
            <summary>
            Serves as a hash function for a particular type, suitable for use
            in hashing algorithms and data structures like a hash table. 
            </summary>
            <remarks>
            <p>
            This implementation returns the hashcode of the
            <see cref="P:YCH.Core.IO.AbstractResource.Description"/> property.
            </p>
            </remarks>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.CreateRelative(System.String)">
            <summary>
            Creates a new resource that is relative to this resource based on the
            supplied <paramref name="resourceName"/>.
            </summary>
            <remarks>
            <p>
            This method can accept either a fully qualified resource name or a
            relative resource name as it's parameter.
            </p>
            <p>
            A fully qualified resource is one that has a protocol prefix and
            all elements of the resource name. All other resources are treated
            as relative to this resource, and the following rules are used to
            locate a relative resource:
            </p>
            <list type="bullet">
                <item>
                If the <paramref name="resourceName"/> starts with <c>'..'</c>,
                the current resource path is navigated backwards before the
                <paramref name="resourceName"/> is concatenated to the current
                <see cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/> of
                this resource.
                </item>
                <item>
                If the <paramref name="resourceName"/> starts with '/', the
                current resource path is ignored and a new resource name is
                appended to the
                <see cref="P:YCH.Core.IO.AbstractResource.RootLocation"/> of
                this resource.
                </item>
                <item>
                If the <paramref name="resourceName"/> starts with '.' or a
                letter, a new path is appended to the current 
                <see cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/> of
                this resource.
                </item>
            </list>
            </remarks>
            <param name="resourceName">
            The name of the resource to create.
            </param>
            <returns>The relative resource.</returns>
            <exception cref="T:System.UriFormatException">
            If the process of resolving the relative resource yielded an
            invalid URI.
            </exception>
            <exception cref="T:System.NotSupportedException">
            If this resource does not support the resolution of relative
            resources (as determined by the value of the
            <see cref="P:YCH.Core.IO.AbstractResource.SupportsRelativeResources"/>
            property).
            </exception>
            <seealso cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/>
        </member>
        <member name="M:YCH.Core.IO.AbstractResource.CalculateResourcePath(System.String)">
            <summary>
            Calculates a new resource path based on the supplied
            <paramref name="relativePath"/>.
            </summary>
            <param name="relativePath">
            The relative path to evaluate.
            </param>
            <returns>The newly calculated resource path.</returns>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.BasePathPlaceHolder">
            <summary>
            The special character that denotes the base (home, or root)
            path.
            </summary>
            <remarks>
            <p>
            Will be resolved (by those <see cref="T:YCH.Core.IO.IResource"/>
            implementations that support it) to the home (or root) path for
            the specific <see cref="T:YCH.Core.IO.IResource"/> implementation.
            </p>
            <p>
            For example, in the case of a web application this will (probably)
            resolve to the virtual directory of said web application.
            </p>
            </remarks>
            <seealso cref="F:YCH.Core.IO.AbstractResource.DefaultBasePathPlaceHolder"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
            <seealso cref="P:YCH.Core.IO.IInputStreamSource.InputStream"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.Protocol">
            <summary>
            Returns the protocol associated with this resource (if any).
            </summary>
            <remarks>
            <p>
            The value of this property may be <see langword="null"/> if no
            protocol is associated with the resource type (for example if the
            resource is a memory stream).
            </p>
            </remarks>
            <value>
            The protocol associated with this resource (if any).
            </value>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.IsOpen">
            <summary>
            Does this resource represent a handle with an open stream?
            </summary>
            <remarks>
            <p>
            This, the default implementation, always returns
            <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource represents a handle with an
            open stream.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.IsOpen"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.Uri">
            <summary>
            Returns the <see cref="T:System.Uri"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            This, the default implementation, always throws a
            <see cref="T:System.IO.FileNotFoundException"/>, assuming that the
            resource cannot be exposed as a <see cref="T:System.Uri"/>.
            </p>
            </remarks>
            <value>
            The <see cref="T:System.Uri"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.FileNotFoundException">
            This, the default implementation, <b>always</b> throws a
            <see cref="T:System.IO.FileNotFoundException"/>.
            </exception>
            <seealso cref="P:YCH.Core.IO.IResource.Uri"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.File">
            <summary>
            Returns a <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            This, the default implementation, always throws a
            <see cref="T:System.IO.FileNotFoundException"/>, assuming that the
            resource cannot be resolved to an absolute file path.
            </p>
            </remarks>
            <value>
            The <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.FileNotFoundException">
            This implementation <b>always</b> throws a
            <see cref="T:System.IO.FileNotFoundException"/>.
            </exception>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <see cref="P:YCH.Core.IO.IResource.Exists"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.Exists">
            <summary>
            Does this resource actually exist in physical form?
            </summary>
            <remarks>
            <p>
            This implementation checks whether a <see cref="T:System.IO.FileInfo"/>
            can be opened, falling back to whether a
            <see cref="T:System.IO.Stream"/> can be opened.
            </p>
            <p>
            This will cover both directories and content resources.
            </p>
            <p>
            This implementation will also return <see langword="false"/> if
            permission to the (file's) path is denied.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource actually exists in physical
            form (for example on a filesystem).
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.SupportsRelativeResources">
            <summary>
            Does this <see cref="T:YCH.Core.IO.IResource"/> support relative
            resource retrieval?
            </summary>
            <remarks>
            <p>
            This property is generally to be consulted prior to attempting
            to attempting to access a resource that is relative to this
            resource (via a call to
            <see cref="M:YCH.Core.IO.IResource.CreateRelative(System.String)"/>).
            </p>
            <p>
            This, the default implementation, always returns
            <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this
            <see cref="T:YCH.Core.IO.IResource"/> supports relative resource
            retrieval.
            </value>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.RootLocation">
            <summary>
            Gets the root location of the resource.
            </summary>
            <remarks>
            <p>
            Where root resource can be taken to mean that part of the resource
            descriptor that doesn't change when a relative resource is looked
            up. Examples of such a root location would include a drive letter,
            a web server name, an assembly name, etc.
            </p>
            </remarks>
            <value>
            The root location of the resource.
            </value>
            <exception cref="T:System.NotSupportedException">
            This, the default implementation, <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </exception>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.ResourcePath">
            <summary>
            Gets the current path of the resource.
            </summary>
            <remarks>
            <p>
            An example value of this property would be the name of the
            directory containing a filesystem based resource.
            </p>
            </remarks>
            <value>
            The current path of the resource.
            </value>
            <exception cref="T:System.NotSupportedException">
            This, the default implementation, <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </exception>
        </member>
        <member name="P:YCH.Core.IO.AbstractResource.PathSeparatorChars">
            <summary>
            Gets those characters that are valid path separators for the
            resource type.
            </summary>
            <remarks>
            <p>
            An example value of this property would be the
            <see cref="F:System.IO.Path.DirectorySeparatorChar"/> and
            <see cref="F:System.IO.Path.AltDirectorySeparatorChar"/> values for a
            filesystem based resource.
            </p>
            <p>
            Any derived classes that override this method are expected to
            return a new array for each access of this property.
            </p>
            </remarks>
            <value>
            Those characters that are valid path separators for the resource
            type.
            </value>
            <exception cref="T:System.NotSupportedException">
            This, the default implementation, <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </exception>
        </member>
        <member name="T:YCH.Core.IO.AssemblyResource">
            <summary>
            An <see cref="T:YCH.Core.IO.IResource"/> implementation for
            resources stored within assemblies.
            </summary>
            <remarks>
            <p>
            This implementation expects any resource name passed to the
            constructor to adhere to the following format:
            </p>
            <p>
            assembly://<i>assemblyName</i>/<i>namespace</i>/<i>resourceName</i>
            </p>
            </remarks>
            <author>Aleksandar Seovic (.NET)</author>
            <author>Federico Spinazzi (.NET)</author>
            <version>$Id: AssemblyResource.cs,v 1.12 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.IO.AssemblyResource.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.AssemblyResource"/> class.
            </summary>
            <param name="resourceName">
            The name of the assembly resource.
            </param>
            <exception cref="T:System.UriFormatException">
            If the supplied <paramref name="resourceName"/> did not conform
            to the expected format.
            </exception>
            <exception cref="T:System.IO.FileLoadException">
            If the assembly specified in the supplied
            <paramref name="resourceName"/> was loaded twice with two
            different evidences.
            </exception>
            <exception cref="T:System.IO.FileNotFoundException">
            If the assembly specified in the supplied
            <paramref name="resourceName"/> could not be found.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            If the caller does not have the required permission to load
            the assembly specified in the supplied
            <paramref name="resourceName"/>.
            </exception>
            <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/>
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
            <exception cref="T:System.Security.SecurityException">
            If the caller does not have the required permission to load
            the underlying assembly's manifest.
            </exception>
            <seealso cref="T:YCH.Core.IO.IInputStreamSource"/>
            <see cref="M:System.Reflection.Assembly.GetManifestResourceStream(System.String)"/> 
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.Exists">
            <summary>
            Does the embedded resource specified in the value passed to the
            constructor exist?
            </summary>
            <value>
            <see langword="true"/> if this resource actually exists in physical
            form (for example on a filesystem).
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
            <see cref="M:System.Reflection.Assembly.GetManifestResourceNames"/> 
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.SupportsRelativeResources">
            <summary>
            Does this <see cref="T:YCH.Core.IO.IResource"/> support relative
            resource retrieval?
            </summary>
            <remarks>
            <p>
            This implementation does support relative resource retrieval, and
            so will always return <see langword="true"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this
            <see cref="T:YCH.Core.IO.IResource"/> supports relative resource
            retrieval.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.SupportsRelativeResources"/>
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.RootLocation">
            <summary>
            Gets the root location of the resource (the assembly name in this
            case).
            </summary>
            <value>
            The root location of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.RootLocation"/>
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.ResourcePath">
            <summary>
            Gets the current path of the resource (the namespace in which the
            target resource was embedded in this case).
            </summary>
            <value>
            The current path of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/>
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.PathSeparatorChars">
            <summary>
            Gets those characters that are valid path separators for the
            resource type.
            </summary>
            <value>
            Those characters that are valid path separators for the resource
            type.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.PathSeparatorChars"/>
        </member>
        <member name="P:YCH.Core.IO.AssemblyResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="T:YCH.Core.IO.ConfigSectionResource">
            <summary>
            Used when retrieving information from the standard .NET configuration
            files (App.config / Web.config).
            </summary>
            <remarks>
            <p>
            If created with the name of a configuration section, then all methods
            aside from the description return <see langword="null"/>,
            <see langword="false"/>, or throw an exception. If created with an
            <see cref="T:System.Xml.XmlElement"/>, then the
            <see cref="P:YCH.Core.IO.ConfigSectionResource.InputStream"/> property
            will return a corresponding <see cref="T:System.IO.Stream"/> to parse.
            </p>
            </remarks>
            <author>Mark Pollack</author>
            <author>Rick Evans</author>
            <version>$Id: ConfigSectionResource.cs,v 1.23 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.IO.ConfigSectionResource.#ctor(System.Xml.XmlElement)">
            <summary>
            Creates new instance of the
            <see cref="T:YCH.Core.IO.ConfigSectionResource"/> class.
            </summary>
            <param name="configSection">
            The actual XML configuration section.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="configSection"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Core.IO.ConfigSectionResource.#ctor(System.String)">
            <summary>
            Creates new instance of the
            <see cref="T:YCH.Core.IO.ConfigSectionResource"/> class.
            </summary>
            <param name="resourceName">
            The name of the configuration section.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="resourceName"/> is
            <see langword="null"/> or contains only whitespace character(s).
            </exception>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.IsOpen">
            <summary>
            Does this resource represent a handle with an open stream?
            </summary>
            <remarks>
            <p>
            This implementation always returns <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource represents a handle with an
            open stream.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.IsOpen"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.Uri">
            <summary>
            Returns the <see cref="T:System.Uri"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            This implementation always returns <see langword="null"/>.
            </p>
            </remarks>
            <value>
            <see langword="null"/>.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Uri"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.File">
            <summary>
            Returns a <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </summary>
            <remarks>
            <p>
            This implementation always returns <see langword="null"/>.
            </p>
            </remarks>
            <value>
            <see langword="null"/>.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.Description">
            <summary>
            Returns a description for this resource (the name of the
            configuration section in this case).
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.Exists">
            <summary>
            Does this resource actually exist in physical form?
            </summary>
            <remarks>
            <p>
            This implementation always returns <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="false"/>
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
            <seealso cref="T:YCH.Core.IO.IInputStreamSource"/>
        </member>
        <member name="P:YCH.Core.IO.ConfigSectionResource.ConfigElement">
            <summary>
            Exposes the actual <see cref="T:System.Xml.XmlElement"/> for the
            configuration section.
            </summary>
            <remarks>
            <p>
            Introduced to accomodate line info tracking during parsing.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Core.IO.FileSystemResource">
            <summary>
            A <see cref="T:System.IO.File"/> backed resource.
            </summary>
            <remarks>
            <p>
            Supports resolution as both a <see cref="T:System.IO.FileInfo"/> and a
            <see cref="T:System.Uri"/>.
            </p>
            <p>
            Also supports the use of the <c>~</c> character. If the <c>~</c> character
            is the first character in a resource path (sans protocol), the <c>~</c>
            character will be replaced with the value of the
            <c>System.AppDomain.CurrentDomain.BaseDirectory</c> property (an example of
            this can be seen in the examples below).
            </p>
            </remarks>
            <example>
            <p>
            Consider the example of an application that is running (has been launched
            from) the <c>C:\App\</c> directory. The following resource paths will map
            to the following resources on the filesystem...
            </p>
            <code escaped="true">
                strings.txt              C:\App\strings.txt
                ~/strings.txt            C:\App\strings.txt
                file://~/strings.txt     C:\App\strings.txt
                file://~/../strings.txt  C:\strings.txt
                ../strings.txt           C:\strings.txt
                ~/../strings.txt         C:\strings.txt
                
                // note that only a leading ~ character is resolved to the executing directory...
                stri~ngs.txt              C:\App\stri~ngs.txt
            </code>
            </example>
            <author>Juergen Hoeller</author>
            <author>Leonardo Susatyo (.NET)</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: FileSystemResource.cs,v 1.17 2006/05/19 22:21:54 bbaia Exp $</version>
        </member>
        <member name="M:YCH.Core.IO.FileSystemResource.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.FileSystemResource"/> class.
            </summary>
        </member>
        <member name="M:YCH.Core.IO.FileSystemResource.#ctor(System.String)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Core.IO.FileSystemResource"/> class.
            </summary>
            <param name="resourceName">
            The name of the file system resource.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="resourceName"/> is
            <see langword="null"/> or contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Core.IO.FileSystemResource.Initialize(System.String)">
            <summary>
            Initializes the state for this <see cref="T:YCH.Core.IO.FileSystemResource"/>.
            </summary>
            <param name="resourceName">
            The name of the file system resource.
            </param>
        </member>
        <member name="M:YCH.Core.IO.FileSystemResource.ResolveBasePathPlaceHolder(System.String,System.String)">
            <summary>
            Resolves the presence of the
            <paramref name="basePathPlaceHolder"/> value
            in the supplied <paramref name="resourceName"/> into a path.
            </summary>
            <param name="resourceName">
            The name of the resource.
            </param>
            <param name="basePathPlaceHolder">
            The string that is a placeholder for a base path.
            </param>
            <returns>
            The name of the resource with any <paramref name="basePathPlaceHolder"/>
            value having been resolved into an actual path.
            </returns>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.File">
            <summary>
            Returns the underlying <see cref="T:System.IO.FileInfo"/> handle for
            this resource.
            </summary>
            <value>
            The <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.SupportsRelativeResources">
            <summary>
            Does this <see cref="T:YCH.Core.IO.IResource"/> support relative
            resource retrieval?
            </summary>
            <remarks>
            <p>
            This implementation does support relative resource retrieval, and
            so will always return <see langword="true"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this
            <see cref="T:YCH.Core.IO.IResource"/> supports relative resource
            retrieval.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.SupportsRelativeResources"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.RootLocation">
            <summary>
            Gets the root location of the resource (a drive or UNC file share
            name in this case).
            </summary>
            <value>
            The root location of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.RootLocation"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.ResourcePath">
            <summary>
            Gets the current path of the resource.
            </summary>
            <value>
            The current path of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.PathSeparatorChars">
            <summary>
            Gets those characters that are valid path separators for the
            resource type.
            </summary>
            <value>
            Those characters that are valid path separators for the resource
            type.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.PathSeparatorChars"/>
            <seealso cref="T:System.IO.Path"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
            <exception cref="T:System.IO.FileNotFoundException">
            If the underlying file could not be found.
            </exception>
            <seealso cref="T:YCH.Core.IO.IInputStreamSource"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="P:YCH.Core.IO.FileSystemResource.Uri">
            <summary>
            Returns the <see cref="T:System.Uri"/> handle for this resource.
            </summary>
            <value>
            The <see cref="T:System.Uri"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.IOException">
            If the resource is not available or cannot be exposed as a
            <see cref="T:System.Uri"/>.
            </exception>
            <seealso cref="P:YCH.Core.IO.IResource.Uri"/>
        </member>
        <member name="T:YCH.Core.IO.InputStreamResource">
            <summary>
            <see cref="T:YCH.Core.IO.IResource"/> adapter implementation for a
            <see cref="T:System.IO.Stream"/>.
            </summary>
            <remarks>
            <p>
            Should only be used if no other <see cref="T:YCH.Core.IO.IResource"/>
            implementation is applicable.
            </p>
            <p>
            In contrast to other <see cref="T:YCH.Core.IO.IResource"/>
            implementations, this is an adapter for an <i>already opened</i>
            resource - the <see cref="P:YCH.Core.IO.InputStreamResource.IsOpen"/>
            therefore always returns <see langword="true"/>. Do not use this class
            if you need to keep the resource descriptor somewhere, or if you need
            to read a stream multiple times.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: InputStreamResource.cs,v 1.7 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.IO.InputStreamResource.#ctor(System.IO.Stream,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.InputStreamResource"/> class.
            </summary>
            <param name="inputStream">
            The input <see cref="T:System.IO.Stream"/> to use.
            </param>
            <param name="description">
            Where the input <see cref="T:System.IO.Stream"/> comes from.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="inputStream"/> is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Core.IO.InputStreamResource.InputStream">
            <summary>
            The input <see cref="T:System.IO.Stream"/> to use.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the underlying <see cref="T:System.IO.Stream"/> has already
            been read.
            </exception>
        </member>
        <member name="P:YCH.Core.IO.InputStreamResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="P:YCH.Core.IO.InputStreamResource.IsOpen">
            <summary>
            Does this resource represent a handle with an open stream?
            </summary>
            <remarks>
            <p>
            Always returns <see langword="true"/> in this implementation.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource represents a handle with an
            open stream.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.IsOpen"/>
        </member>
        <member name="P:YCH.Core.IO.InputStreamResource.Exists">
            <summary>
            Does this resource actually exist in physical form?
            </summary>
            <remarks>
            <p>
            Always returns <see langword="true"/> in this implementation.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this resource actually exists in physical
            form (for example on a filesystem).
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Exists"/>
        </member>
        <member name="T:YCH.Core.IO.ResourceConverter">
            <summary>
            Custom type converter for <see cref="T:YCH.Core.IO.IResource"/> instances.
            </summary>
            <remarks>
            <p>
            A resource path may contain placeholder variables of the form <c>${...}</c>
            that will be expended to <b>environment variables</b>.
            </p>
            <p>
            Currently only supports conversion from a <see cref="T:System.String"/>
            instance.
            </p>
            </remarks>
            <example>
            <p>
            On Win9x boxes, this resource path, <c>${userprofile}\objects.xml</c> will
            be expanded at runtime with the value of the <c>'userprofile'</c> environment
            variable substituted for the <c>'${userprofile}'</c> portion of the path.
            </p>
            <code escaped="true">
            // assuming a user called Rick, running on a plain vanilla Windows XP setup...
            // this resource path...
            
            ${userprofile}\objects.xml
            
            // will become (after expansion)...
            
            C:\Documents and Settings\Rick\objects.xml
            </code>
            </example>
            <author>Mark Pollack</author>
            <version>$Id: ResourceConverter.cs,v 1.10 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResourceLoader"/>
            <seealso cref="T:System.ComponentModel.TypeConverter"/>
        </member>
        <member name="M:YCH.Core.IO.ResourceConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.ResourceConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Core.IO.ResourceConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a <see cref="T:YCH.Core.IO.IResource"/>
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>
            <see langword="true"/> if the conversion is possible.
            </returns>
        </member>
        <member name="M:YCH.Core.IO.ResourceConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a
            <see cref="T:YCH.Core.IO.IResource"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            An <see cref="T:YCH.Core.IO.IResource"/> if successful. 
            </returns>
            <exception cref="T:System.UriFormatException">
            If the resource name objectained form the supplied
            <paramref name="value"/> is malformed.
            </exception>
            <exception cref="T:System.Exception">
            In the case of any errors arising from the instantiation of the
            returned <see cref="T:YCH.Core.IO.IResource"/> instance.
            </exception>
        </member>
        <member name="M:YCH.Core.IO.ResourceConverter.ResolvePath(System.String)">
            <summary>
            Resolve the given path, replacing placeholder values with
            corresponding property values if necessary.
            </summary>
            <remarks>
            <p>
            This implementation resolves environment variables only.
            </p>
            </remarks>
            <param name="path">The original resource path.</param>
            <returns>The resolved resource path.</returns>
        </member>
        <member name="M:YCH.Core.IO.ResourceConverter.GetResourceLoader">
            <summary>
            Return the <see cref="T:YCH.Core.IO.IResourceLoader"/> used to
            resolve the string.
            </summary>
            <returns>
            The <see cref="T:YCH.Core.IO.IResourceLoader"/> used to resolve
            the string.
            </returns>
        </member>
        <member name="T:YCH.Core.IO.ResourceHandlerRegistry">
            <summary>
            Registry class that allows users to register and retrieve protocol handlers.
            </summary>
            <remarks>
            <para>
            Resource handler is an implementation of <see cref="T:YCH.Core.IO.IResource"/> interface
            that should be used to process resources with the specified protocol.
            </para>
            <para>
            They are used throughout the framework to access resources from various 
            sources. For example, application context loads object definitions from the resources
            that are processed using one of the registered resource handlers.
            </para>
            <para>Following resource handlers are registered by default:</para>
            <list type="table">
                <listheader>
                    <term>Protocol</term>
                    <term>Handler Type</term>
                    <term>Description</term>
                </listheader>
                <item>
                    <description>config</description>
                    <description><see cref="T:YCH.Core.IO.ConfigSectionResource"/></description>
                    <description>Resolves the resources by loading specified configuration section from the standard .NET config file.</description>
                </item>
                <item>
                    <description>file</description>
                    <description><see cref="T:YCH.Core.IO.FileSystemResource"/></description>
                    <description>Resolves filesystem resources.</description>
                </item>
                <item>
                    <description>http</description>
                    <description><see cref="T:YCH.Core.IO.UrlResource"/></description>
                    <description>Resolves remote web resources.</description>
                </item>
                <item>
                    <description>https</description>
                    <description><see cref="T:YCH.Core.IO.UrlResource"/></description>
                    <description>Resolves remote web resources via HTTPS.</description>
                </item>
                <item>
                    <description>assembly</description>
                    <description><see cref="T:YCH.Core.IO.AssemblyResource"/></description>
                    <description>Resolves resources that are embedded into an assembly.</description>
                </item>
                <item>
                    <description>web</description>
                    <description><c>YCH.Core.IO.WebResource, YCH.Web</c>*</description>
                    <description>Resolves resources relative to the web application's virtual directory.</description>
                </item>
            </list>
            * only available in web applications.
            <para>
            Users can create and register their own protocol handlers by implementing <see cref="T:YCH.Core.IO.IResource"/> interface
            and mapping custom protocol name to that implementation. See <see cref="T:YCH.Context.Support.ResourcesSectionHandler"/> for details
            on how to register custom protocol handler.
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ResourceHandlerRegistry.cs,v 1.2 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.IO.ResourceHandlerRegistry.#ctor">
            <summary>
            Creates a singleton instance of <see cref="T:YCH.Core.IO.ResourceHandlerRegistry"/>.
            </summary>
        </member>
        <member name="M:YCH.Core.IO.ResourceHandlerRegistry.GetResourceHandler(System.String)">
            <summary>
            Returns resource handler for the specified protocol name.
            </summary>
            <remarks>
            <para>
            This method returns <see cref="T:System.Reflection.ConstructorInfo"/> object that should be used
            to create an instance of the <see cref="T:YCH.Core.IO.IResource"/>-derived type by passing
            resource location as a parameter.
            </para>
            </remarks>
            <param name="protocolName">Name of the protocol to get the handler for.</param>
            <returns>Resource handler constructor for the specified protocol name.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="protocolName"/> is <c>null</c>.</exception>
        </member>
        <member name="M:YCH.Core.IO.ResourceHandlerRegistry.IsHandlerRegistered(System.String)">
            <summary>
            Returns <c>true</c> if a handler is registered for the specified protocol, 
            <c>false</c> otherwise.
            </summary>
            <param name="protocolName">Name of the protocol.</param>
            <returns>
                <c>true</c> if a handler is registered for the specified protocol, <c>false</c> otherwise.
            </returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="protocolName"/> is <c>null</c>.</exception>
        </member>
        <member name="M:YCH.Core.IO.ResourceHandlerRegistry.RegisterResourceHandler(System.String,System.String)">
            <summary>
            Registers resource handler and maps it to the specified protocol name.
            </summary>
            <remarks>
            <p>
            If the mapping already exists, the existing mapping will be
            silently overwritten with the new mapping.
            </p>
            </remarks>
            <param name="protocolName">
            The protocol to add (or override).
            </param>
            <param name="handlerTypeName">
            The type name of the concrete implementation of the
            <see cref="T:YCH.Core.IO.IResource"/> interface that will handle
            the specified protocol.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="protocolName"/> is
            <see langword="null"/> or contains only whitespace character(s); or
            if the supplied <paramref name="handlerTypeName"/> is
            <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="handlerTypeName"/> is not a 
            <see cref="T:System.Type"/> that derives from the
            <see cref="T:YCH.Core.IO.IResource"/> interface; or (having passed
            this first check), the supplied <paramref name="handlerTypeName"/>
            does not expose a constructor that takes a single
            <see cref="T:System.String"/> parameter.
            </exception>
        </member>
        <member name="M:YCH.Core.IO.ResourceHandlerRegistry.RegisterResourceHandler(System.String,System.Type)">
            <summary>
            Registers resource handler and maps it to the specified protocol name.
            </summary>
            <remarks>
            <p>
            If the mapping already exists, the existing mapping will be
            silently overwritten with the new mapping.
            </p>
            </remarks>
            <param name="protocolName">
            The protocol to add (or override).
            </param>
            <param name="handlerType">
            The concrete implementation of the
            <see cref="T:YCH.Core.IO.IResource"/> interface that will handle
            the specified protocol.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="protocolName"/> is
            <see langword="null"/> or contains only whitespace character(s); or
            if the supplied <paramref name="handlerType"/> is
            <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="handlerType"/> is not a 
            <see cref="T:System.Type"/> that derives from the
            <see cref="T:YCH.Core.IO.IResource"/> interface; or (having passed
            this first check), the supplied <paramref name="handlerType"/>
            does not expose a constructor that takes a single
            <see cref="T:System.String"/> parameter.
            </exception>
        </member>
        <member name="T:YCH.Core.IO.UrlResource">
            <summary>
            A <see cref="T:System.Uri"/> backed resource.
            </summary>
            <remarks>
            <p>
            Obviously supports resolution as a <see cref="T:System.Uri"/>, and also
            as a <see cref="T:System.IO.FileInfo"/> in the case of the <c>"file:"</c>
            protocol.
            </p>
            </remarks>
            <example>
            <p>
            Some examples of the strings that can be used to initialize a new
            instance of the <see cref="T:YCH.Core.IO.UrlResource"/> class
            include...
            <list type="bullet">
            <item>
            <description>file:///Config/objects.xml</description>
            </item>
            <item>
            <description>http://www.mycompany.com/services.txt</description>
            </item>
            </list>
            </p>
            </example>
            <author>Juergen Hoeller</author>
            <author>Leonardo Susatyo (.NET)</author>
            <author>Aleksandar Seovic (.NET)</author>
            <version>$Id: UrlResource.cs,v 1.11 2006/04/09 07:18:38 markpollack Exp $</version>
            <seealso cref="T:YCH.Core.IO.IResource"/>
            <seealso cref="T:YCH.Core.IO.IResourceLoader"/>
            <seealso cref="T:YCH.Core.IO.ConfigurableResourceLoader"/>
        </member>
        <member name="M:YCH.Core.IO.UrlResource.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.IO.UrlResource"/> class.
            </summary>
            <example>
            <p>
            Some examples of the values that the <paramref name="resourceName"/>
            can typically be expected to hold include...
            <list type="bullet">
            <item>
            <description>file:///Config/objects.xml</description>
            </item>
            <item>
            <description>http://www.mycompany.com/services.txt</description>
            </item>
            </list>
            </p>
            </example>
            <param name="resourceName">
            A string representation of the <see cref="T:System.Uri"/> resource.
            </param>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.InputStream">
            <summary>
            Return an <see cref="T:System.IO.Stream"/> for this resource.
            </summary>
            <value>
            An <see cref="T:System.IO.Stream"/>.
            </value>
            <exception cref="T:System.IO.IOException">
            If the stream could not be opened.
            </exception>
            <seealso cref="T:YCH.Core.IO.IInputStreamSource"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.Uri">
            <summary>
            Returns the <see cref="T:System.Uri"/> handle for this resource.
            </summary>
            <value>
            The <see cref="T:System.Uri"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.IOException">
            If the resource is not available or cannot be exposed as a
            <see cref="T:System.Uri"/>.
            </exception>
            <seealso cref="P:YCH.Core.IO.IResource.Uri"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.File">
            <summary>
            Returns a <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </summary>
            <value>
            The <see cref="T:System.IO.FileInfo"/> handle for this resource.
            </value>
            <exception cref="T:System.IO.FileNotFoundException">
            If the resource is not available on a filesystem.
            </exception>
            <seealso cref="P:YCH.Core.IO.IResource.File"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.SupportsRelativeResources">
            <summary>
            Does this <see cref="T:YCH.Core.IO.IResource"/> support relative
            resource retrieval?
            </summary>
            <remarks>
            <p>
            This implementation does support relative resource retrieval, and
            so will always return <see langword="true"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if this
            <see cref="T:YCH.Core.IO.IResource"/> supports relative resource
            retrieval.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.SupportsRelativeResources"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.RootLocation">
            <summary>
            Gets the root location of the resource (a drive or UNC file share
            name in this case).
            </summary>
            <value>
            The root location of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.RootLocation"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.ResourcePath">
            <summary>
            Gets the current path of the resource.
            </summary>
            <value>
            The current path of the resource.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.ResourcePath"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.PathSeparatorChars">
            <summary>
            Gets those characters that are valid path separators for the
            resource type.
            </summary>
            <value>
            Those characters that are valid path separators for the resource
            type.
            </value>
            <seealso cref="P:YCH.Core.IO.AbstractResource.PathSeparatorChars"/>
        </member>
        <member name="P:YCH.Core.IO.UrlResource.Description">
            <summary>
            Returns a description for this resource.
            </summary>
            <value>
            A description for this resource.
            </value>
            <seealso cref="P:YCH.Core.IO.IResource.Description"/>
        </member>
        <member name="T:YCH.Core.ControlFlowFactory">
            <summary>
            Factory class to conceal any default <see cref="T:YCH.Core.IControlFlow"/> implementation.
            </summary>
            <author>Rod Johnson</author>
            <author>Simon White (.NET)</author>
            <version>$Id: ControlFlowFactory.cs,v 1.7 2006/02/11 18:23:32 gcaprio Exp $</version>
        </member>
        <member name="M:YCH.Core.ControlFlowFactory.CreateControlFlow">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Core.IControlFlow"/>
            implementation provided by this factory.
            </summary>
            <returns>
            A new instance of the <see cref="T:YCH.Core.IControlFlow"/>
            implementation provided by this factory.
            </returns>
        </member>
        <member name="T:YCH.Core.IControlFlow">
            <summary> 
            Interface to be implemented by objects that can return information about
            the current call stack.
            </summary>
            <remarks>
            <p>
            Useful in AOP (as an expression of the AspectJ <c>cflow</c> concept) but not AOP-specific.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Aleksandar Seovic (.Net)</author>
            <version>$Id: IControlFlow.cs,v 1.4 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.IControlFlow.Under(System.Type)">
            <summary>
            Detects whether the caller is under the supplied <see cref="T:System.Type"/>,
            according to the current stacktrace.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> to look for.
            </param>
            <returns>
            <see langword="true"/> if the caller is under the supplied <see cref="T:System.Type"/>.
            </returns>
        </member>
        <member name="M:YCH.Core.IControlFlow.Under(System.Type,System.String)">
            <summary>
            Detects whether the caller is under the supplied <see cref="T:System.Type"/>
            and <paramref name="methodName"/>, according to the current stacktrace.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> to look for.
            </param>
            <param name="methodName">The name of the method to look for.</param>
            <returns>
            <see langword="true"/> if the caller is under the supplied <see cref="T:System.Type"/>
            and <paramref name="methodName"/>.
            </returns>
        </member>
        <member name="M:YCH.Core.IControlFlow.UnderToken(System.String)">
            <summary>
            Does the current stack trace contain the supplied <paramref name="token"/>?
            </summary>
            <param name="token">The token to match against.</param>
            <returns>
            <see langword="true"/> if the current stack trace contains the supplied
            <paramref name="token"/>.
            </returns>
        </member>
        <member name="M:YCH.Core.ControlFlowFactory.DefaultControlFlow.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Core.ControlFlowFactory.DefaultControlFlow"/> class.
            </summary>
        </member>
        <member name="M:YCH.Core.ControlFlowFactory.DefaultControlFlow.YCH#Core#IControlFlow#Under(System.Type)">
            <summary>
            Detects whether the caller is under the supplied <see cref="T:System.Type"/>,
            according to the current stacktrace.
            </summary>
            <seealso cref="M:YCH.Core.IControlFlow.Under(System.Type)"/>
        </member>
        <member name="M:YCH.Core.ControlFlowFactory.DefaultControlFlow.YCH#Core#IControlFlow#Under(System.Type,System.String)">
            <summary>
            Detects whether the caller is under the supplied <see cref="T:System.Type"/>
            and <paramref name="methodName"/>, according to the current stacktrace.
            </summary>
            <remarks>
            <p>
            Matches the whole method name.
            </p>
            </remarks>
            <seealso cref="M:YCH.Core.IControlFlow.Under(System.Type,System.String)"/>
        </member>
        <member name="M:YCH.Core.ControlFlowFactory.DefaultControlFlow.YCH#Core#IControlFlow#UnderToken(System.String)">
            <summary>
            Does the current stack trace contain the supplied <paramref name="token"/>?
            </summary>
            <remarks>
            <p>
            This leaves it up to the caller to decide what matches, but is obviously less of
            an abstraction because the caller must know the exact format of the underlying
            stack trace.
            </p>
            </remarks>
            <seealso cref="M:YCH.Core.IControlFlow.UnderToken(System.String)"/>
        </member>
        <member name="T:YCH.Core.ICriteria">
            <summary>
            The criteria for an arbitrary filter.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: ICriteria.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.ICriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria
            encapsulated by this instance?
            </summary>
            <param name="datum">
            The datum to be checked by this criteria instance.
            </param>
            <returns>
            <see langword="true"/> if the supplied <paramref name="datum"/>
            satisfies the criteria encapsulated by this instance;
            <see langword="false"/> if not, or the supplied
            <paramref name="datum"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="T:YCH.Core.IErrorCoded">
            <summary>
            Interface that can be implemented by exceptions etc that are error coded.
            </summary>
            <remarks>
            <p>
            The error code is a <see cref="T:System.String"/>, rather than a number, so it can
            be given user-readable values, such as "object.failureDescription".
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Aleksandar Seovic (.Net)</author>
            <version>$Id: IErrorCoded.cs,v 1.6 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Core.IErrorCoded.ErrorCode">
            <summary>
            Return the error code associated with this failure.
            </summary>
            <remarks>
            <p>
            The GUI can render this anyway it pleases, allowing for I18n etc.
            </p>
            </remarks>
            <returns>
            The <see cref="T:System.String"/> error code associated with this failure,
            or the empty string instance if not error-coded.
            </returns>
        </member>
        <member name="T:YCH.Core.IOrdered">
            <summary>
            Interface that can be implemented by objects that should be orderable, e.g. in an
            <see cref="T:System.Collections.ICollection"/>.
            </summary>
            <remarks>
            <p>
            The actual order can be interpreted as prioritization, the first object (with the
            lowest order value) having the highest priority.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Aleksandar Seovic (.Net)</author>
            <version>$Id: IOrdered.cs,v 1.5 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Core.IOrdered.Order">
            <summary>
            Return the order value of this object, where a higher value means greater in
            terms of sorting.
            </summary>
            <remarks>
            <p>
            Normally starting with 0 or 1, with <see cref="F:System.Int32.MaxValue"/> indicating
            greatest. Same order values will result in arbitrary positions for the affected
            objects.
            </p>
            <p>
            Higher value can be interpreted as lower priority, consequently the first object
            has highest priority.
            </p>
            </remarks>
            <returns>The order value.</returns>
        </member>
        <member name="T:YCH.Core.OrderComparator">
            <summary>
            Comparator implementation for <see cref="T:YCH.Core.IOrdered"/> objects, sorting by
            order value ascending (resp. by priority descending).
            </summary>
            <remarks>
            <p>
            Non-<see cref="T:YCH.Core.IOrdered"/> objects are treated as greatest order values,
            thus ending up at the end of a list, in arbitrary order (just like same order values of
            <see cref="T:YCH.Core.IOrdered"/> objects).
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Aleksandar Seovic (.Net)</author>
            <version>$Id: OrderComparator.cs,v 1.5 2006/04/09 07:18:38 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Core.OrderComparator.Compare(System.Object,System.Object)">
            <summary>
            Compares two objects and returns a value indicating whether one is less than,
            equal to or greater than the other.
            </summary>
            <remarks>
            <p>
            Uses direct evaluation instead of <see cref="M:System.Int32.CompareTo(System.Object)"/>
            to avoid unnecessary boxing.
            </p>
            </remarks>
            <param name="o1">The first object to compare.</param>
            <param name="o2">The second object to compare.</param>
            <returns>
            -1 if first object is less then second, 1 if it is greater, or 0 if they are equal.
            </returns>
        </member>
        <member name="T:YCH.DataBinding.Binding">
            <summary>
            This class encapsulates all information related to a single data binding.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: Binding.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.DataBinding.Binding.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.DataBinding.Binding"/> class.
            </summary>
            <param name="sourceExpression">The source expression.</param>
            <param name="targetExpression">The target expression.</param>
        </member>
        <member name="M:YCH.DataBinding.Binding.SetErrorMessage(System.String,System.String[])">
            <summary>
            Sets error message that should be displayed in the case of non-fatal binding error.
            </summary>
            <param name="messageId">Resource ID of the error message.</param>
            <param name="errorProviders">List of error providers message should be added to.</param>
        </member>
        <member name="P:YCH.DataBinding.Binding.IsValid">
            <summary>
            Gets or sets a value indicating whether this instance is valid.
            </summary>
            <value><c>true</c> if this instance is valid; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.SourceExpression">
            <summary>
            Gets the source expression.
            </summary>
            <value>The source expression.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.TargetExpression">
            <summary>
            Gets the target expression.
            </summary>
            <value>The target expression.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.Direction">
            <summary>
            Gets or sets the <see cref="T:YCH.DataBinding.BindingDirection"/>.
            </summary>
            <value>The binding direction.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.Formatter">
            <summary>
            Gets or sets the <see cref="T:YCH.Globalization.IFormatter"/> to use.
            </summary>
            <value>The formatter to use.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.ErrorMessage">
            <summary>
            Gets the error message.
            </summary>
            <value>The error message.</value>
        </member>
        <member name="P:YCH.DataBinding.Binding.ErrorProviders">
            <summary>
            Gets the error providers.
            </summary>
        </member>
        <member name="T:YCH.DataBinding.BindingDirection">
            <summary>
            Enumeration that defines possible values for data binding direction.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: BindingDirection.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="F:YCH.DataBinding.BindingDirection.SourceToTarget">
            <summary>
            Specifies that value from the control property should be bound to a data model.
            </summary>
        </member>
        <member name="F:YCH.DataBinding.BindingDirection.TargetToSource">
            <summary>
            Specifies that value from the data model should be bound to control property.
            </summary>
        </member>
        <member name="F:YCH.DataBinding.BindingDirection.Bidirectional">
            <summary>
            Specifies that binding is bidirectional.
            </summary>
        </member>
        <member name="T:YCH.DataBinding.DataBindingManager">
            <summary>
            DataBindingManager keeps track of all registered bindings and 
            manages binding and unbinding process.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: DataBindingManager.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.DataBinding.DataBindingManager"/> class.
            </summary>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.AddBinding(YCH.DataBinding.Binding)">
            <summary>
            Adds the binding.
            </summary>
            <param name="binding">Binding definition to add.</param>
            <returns>Added <see cref="T:YCH.DataBinding.Binding"/> instance.</returns>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.AddBinding(System.String,System.String)">
            <summary>
            Adds the binding with a default binding direction of <see cref="F:YCH.DataBinding.BindingDirection.Bidirectional"/>.
            </summary>
            <param name="sourceExpression">The source expression.</param>
            <param name="targetExpression">The target expression.</param>
            <returns>Added <see cref="T:YCH.DataBinding.Binding"/> instance.</returns>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.AddBinding(System.String,System.String,YCH.DataBinding.BindingDirection)">
            <summary>
            Adds the binding.
            </summary>
            <param name="sourceExpression">The source expression.</param>
            <param name="targetExpression">The target expression.</param>
            <param name="direction">Binding direction.</param>
            <returns>Added <see cref="T:YCH.DataBinding.Binding"/> instance.</returns>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.AddBinding(System.String,System.String,YCH.Globalization.IFormatter)">
            <summary>
            Adds the binding with a default binding direction of <see cref="F:YCH.DataBinding.BindingDirection.Bidirectional"/>.
            </summary>
            <param name="sourceExpression">The source expression.</param>
            <param name="targetExpression">The target expression.</param>
            <param name="formatter"><see cref="T:YCH.Globalization.IFormatter"/> to use for value formatting and parsing.</param>
            <returns>Added <see cref="T:YCH.DataBinding.Binding"/> instance.</returns>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.AddBinding(System.String,System.String,YCH.DataBinding.BindingDirection,YCH.Globalization.IFormatter)">
            <summary>
            Adds the binding.
            </summary>
            <param name="sourceExpression">The source expression.</param>
            <param name="targetExpression">The target expression.</param>
            <param name="direction">Binding direction.</param>
            <param name="formatter"><see cref="T:YCH.Globalization.IFormatter"/> to use for value formatting and parsing.</param>
            <returns>Added <see cref="T:YCH.DataBinding.Binding"/> instance.</returns>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.BindSourceToTarget(System.Object,System.Object,YCH.Validation.ValidationErrors)">
            <summary>
            Binds source to target.
            </summary>
            <param name="sourceContext">The source context.</param>
            <param name="targetContext">The target context.</param>
            <param name="validationErrors">Validation errors collection that type conversion errors should be added to.</param>
        </member>
        <member name="M:YCH.DataBinding.DataBindingManager.BindTargetToSource(System.Object,System.Object,YCH.Validation.ValidationErrors)">
            <summary>
            Binds target to source.
            </summary>
            <param name="sourceContext">The source context.</param>
            <param name="targetContext">The target context.</param>
            <param name="validationErrors">Validation errors collection that type conversion errors should be added to.</param>
        </member>
        <member name="P:YCH.DataBinding.DataBindingManager.HasBindings">
            <summary>
            Gets a value indicating whether this instance has bindings.
            </summary>
            <value>
            	<c>true</c> if this instance has bindings; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="T:YCH.DataBinding.IDataBound">
            <summary>
            Interface that should be implemented by data bound objects, such as 
            web pages, user controls, windows forms, etc.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IDataBound.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="P:YCH.DataBinding.IDataBound.BindingManager">
            <summary>
            Gets the binding manager.
            </summary>
            <value>The binding manager.</value>
        </member>
        <member name="T:YCH.Expressions.ArrayConstructorNode">
            <summary>
            Represents parsed method node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ArrayConstructorNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Expressions.NodeWithArguments">
            <summary>
            Base type for nodes that accept arguments.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: NodeWithArguments.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Expressions.BaseNode">
            <summary>
            Base type for all expression nodes.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: BaseNode.cs,v 1.5 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Expressions.IExpression">
            <summary>
            Interface that all navigation expression nodes have to implement.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IExpression.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.IExpression.GetValue">
            <summary>
            Returns expression value.
            </summary>
            <returns>Value of the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.IExpression.GetValue(System.Object)">
            <summary>
            Returns expression value.
            </summary>
            <param name="context">Object to evaluate expression against.</param>
            <returns>Value of the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.IExpression.GetValue(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns expression value.
            </summary>
            <param name="context">Object to evaluate expression against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Value of the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.IExpression.SetValue(System.Object,System.Object)">
            <summary>
            Sets expression value.
            </summary>
            <param name="context">Object to evaluate expression against.</param>
            <param name="newValue">New value for the last node of the expression.</param>
        </member>
        <member name="M:YCH.Expressions.IExpression.SetValue(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets expression value.
            </summary>
            <param name="context">Object to evaluate expression against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for the last node of the expression.</param>
        </member>
        <member name="M:YCH.Expressions.BaseNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BaseNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.BaseNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BaseNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.BaseNode.GetValue">
            <summary>
            Returns node's value.
            </summary>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.BaseNode.GetValue(System.Object)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.BaseNode.GetValue(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.BaseNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.BaseNode.SetValue(System.Object,System.Object)">
            <summary>
            Sets node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="M:YCH.Expressions.BaseNode.SetValue(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="M:YCH.Expressions.BaseNode.Set(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets node's value for the given context.
            </summary>
            <remarks>
            <p>
            This is a default implementation of <c>Set</c> method, which
            simply throws <see cref="T:System.NotSupportedException"/>. 
            </p>
            <p>
            This was done in order to avoid redundant <c>Set</c> method implementations,
            because most of the node types do not support value setting.
            </p>
            </remarks>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="P:YCH.Expressions.BaseNode.RootContext">
            <summary>
            Gets the root context.
            </summary>
            <returns>Root context for the expression.</returns>
        </member>
        <member name="P:YCH.Expressions.BaseNode.RootContextType">
            <summary>
            Gets the root context type.
            </summary>
            <returns>Root context for the expression.</returns>
        </member>
        <member name="P:YCH.Expressions.BaseNode.CurrentContext">
            <summary>
            Gets the current context.
            </summary>
            <returns>Current context for the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.NodeWithArguments"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.NodeWithArguments"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.InitializeNode">
            <summary>
            Initializes the node. 
            </summary>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.AssertArgumentCount(System.Int32)">
            <summary>
            Asserts the argument count.
            </summary>
            <param name="requiredCount">The required count.</param>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.ResolveArgument(System.Int32,System.Collections.IDictionary)">
            <summary>
            Resolves the argument.
            </summary>
            <param name="position">Argument position in the argument list.</param>
            <param name="variables">Expression variables map.</param>
            <returns></returns>
        </member>
        <member name="M:YCH.Expressions.NodeWithArguments.ResolveArguments(System.Collections.IDictionary)">
            <summary>
            Resolves the arguments.
            </summary>
            <param name="variables">Expression variables map.</param>
            <returns></returns>
        </member>
        <member name="M:YCH.Expressions.ArrayConstructorNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Creates new instance of the type defined by this node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.AssignNode">
            <summary>
            Represents parsed assignment node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: AssignNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.AssignNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Assigns value of the right operand to the left one.
            </summary>
            <param name="context">Context to evaluate expressions against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.BinaryOperator">
            <summary>
            Base class for unary operators.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: BinaryOperator.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.BinaryOperator.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BinaryOperator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.BinaryOperator.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BinaryOperator"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="P:YCH.Expressions.BinaryOperator.Left">
            <summary>
            Gets the left operand.
            </summary>
            <value>The left operand.</value>
        </member>
        <member name="P:YCH.Expressions.BinaryOperator.Right">
            <summary>
            Gets the right operand.
            </summary>
            <value>The right operand.</value>
        </member>
        <member name="T:YCH.Expressions.BooleanLiteralNode">
            <summary>
            Represents parsed boolean literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: BooleanLiteralNode.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.BooleanLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BooleanLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.BooleanLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.BooleanLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.BooleanLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the boolean literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.CompareOperator">
            <summary>
            Contains common logic for logical comparison operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: CompareOperator.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.CompareOperator.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.CompareOperator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.CompareOperator.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.CompareOperator"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.CompareOperator.Compare(System.Object,System.Object)">
            <summary>Compares left and right operand.</summary>
            <param name="left">Left operand.</param>
            <param name="right">Right operand.</param>
            <returns>
            0, if operands are equal; 
            less than zero, if left operand is smaller than the right one;
            more than zero, if left operand is greater than the right one.</returns>
        </member>
        <member name="T:YCH.Expressions.ConstructorNode">
            <summary>
            Represents parsed method node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConstructorNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.ConstructorNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Creates new instance of the type defined by this node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.DateLiteralNode">
            <summary>
            Represents parsed node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: DateLiteralNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.DateLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.Expression">
            <summary>
            Container object for the parsed expression.
            </summary>
            <remarks>
            <p>
            Preparing this object once and reusing it many times for expression
            evaluation can result in significant performance improvements, as 
            expression parsing and reflection lookups are only performed once. 
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: Expression.cs,v 1.6 2006/05/03 01:13:41 aseovic Exp $</version>
        </member>
        <member name="M:YCH.Expressions.Expression.Parse(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.Expression"/> class
            by parsing specified expression string.
            </summary>
            <param name="expression">Expression to parse.</param>
        </member>
        <member name="M:YCH.Expressions.Expression.ParsePrimary(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.Expression"/> class
            by parsing specified primary expression string.
            </summary>
            <param name="expression">Primary expression to parse.</param>
        </member>
        <member name="M:YCH.Expressions.Expression.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.Expression"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.Expression.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Evaluates this expression for the specified root object and returns 
            value of the last node.
            </summary>
            <param name="context">Context to evaluate expression against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Value of the last node.</returns>
        </member>
        <member name="M:YCH.Expressions.Expression.Set(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Evaluates this expression for the specified root object and sets 
            value of the last node.
            </summary>
            <param name="context">Context to evaluate expression against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">Value to set last node to.</param>
            <exception cref="T:System.NotSupportedException">If navigation expression is empty.</exception>
        </member>
        <member name="M:YCH.Expressions.Expression.GetPropertyInfo(System.Object,System.Collections.IDictionary)">
            <summary>
            Evaluates this expression for the specified root object and returns 
            <see cref="T:System.Reflection.PropertyInfo"/> of the last node, if possible.
            </summary>
            <param name="context">Context to evaluate expression against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Value of the last node.</returns>
        </member>
        <member name="T:YCH.Expressions.ExpressionEvaluator">
            <summary>
            Utility class that enables easy expression evaluation.
            </summary>
            <remarks>
            <p>
            This class allows users to get or set properties, execute methods, and evaluate
            logical and arithmetic expressions.
            </p>
            <p>
            Methods in this class parse expression on every invocation.
            If you plan to reuse the same expression many times, you should prepare
            the expression once using the static <see cref="M:YCH.Expressions.Expression.Parse(System.String)"/> method,
            and then call <see cref="M:YCH.Expressions.IExpression.GetValue(System.Object,System.Collections.IDictionary)"/> to evaluate it.
            </p>
            <p>
            This can result in significant performance improvements as it avoids expression
            parsing and node resolution every time it is called. 
            </p>
            <p>
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ExpressionEvaluator.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.ExpressionEvaluator.GetValue(System.Object,System.String)">
            <summary>
            Parses and evaluates specified expression.
            </summary>
            <param name="root">Root object.</param>
            <param name="expression">Expression to evaluate.</param>
            <returns>Value of the last node in the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.ExpressionEvaluator.GetValue(System.Object,System.String,System.Collections.IDictionary)">
            <summary>
            Parses and evaluates specified expression.
            </summary>
            <param name="root">Root object.</param>
            <param name="expression">Expression to evaluate.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Value of the last node in the expression.</returns>
        </member>
        <member name="M:YCH.Expressions.ExpressionEvaluator.SetValue(System.Object,System.String,System.Object)">
            <summary>
            Parses and specified expression and sets the value of the
            last node to the value of the <c>newValue</c> parameter.
            </summary>
            <param name="root">Root object.</param>
            <param name="expression">Expression to evaluate.</param>
            <param name="newValue">Value to set last node to.</param>
        </member>
        <member name="M:YCH.Expressions.ExpressionEvaluator.SetValue(System.Object,System.String,System.Collections.IDictionary,System.Object)">
            <summary>
            Parses and specified expression and sets the value of the
            last node to the value of the <c>newValue</c> parameter.
            </summary>
            <param name="root">Root object.</param>
            <param name="expression">Expression to evaluate.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">Value to set last node to.</param>
        </member>
        <member name="T:YCH.Expressions.ExpressionListNode">
            <summary>
            Represents parsed expression list node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ExpressionListNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.ExpressionListNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a result of the last expression in a list.
            </summary>
            <param name="context">Context to evaluate expressions against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Result of the last expression in a list</returns>
        </member>
        <member name="T:YCH.Expressions.HexLiteralNode">
            <summary>
            Represents parsed hexadecimal integer literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: HexLiteralNode.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.HexLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.HexLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.HexLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.HexLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.HexLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the hexadecimal integer literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.IndexerNode">
            <summary>
            Represents parsed indexer node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IndexerNode.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.IndexerNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.IndexerNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.IndexerNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.IndexerNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.IndexerNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.IndexerNode.Set(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="T:YCH.Expressions.IntLiteralNode">
            <summary>
            Represents parsed integer literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IntLiteralNode.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.IntLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.IntLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.IntLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.IntLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.IntLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the integer literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.MethodNode">
            <summary>
            Represents parsed method node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: MethodNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.MethodNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.NullLiteralNode">
            <summary>
            Represents parsed null literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: NullLiteralNode.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.NullLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.NullLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.NullLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.NullLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.NullLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the null literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpADD">
            <summary>
            Represents arithmetic addition operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpADD.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpADD.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpADD"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpADD.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpADD"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpADD.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic addition operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpAND">
            <summary>
            Represents logical AND operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpAND.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpAND.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpAND"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpAND.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpAND"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpAND.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical AND operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpDIVIDE">
            <summary>
            Represents arithmetic division operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpDIVIDE.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpDIVIDE.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpDIVIDE"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpDIVIDE.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpDIVIDE"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpDIVIDE.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic division operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpEqual">
            <summary>
            Represents logical equality operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpEqual.cs,v 1.5 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpEqual.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpEqual"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpEqual.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpEqual"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpEqual.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical equality operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpGreater">
            <summary>
            Represents logical "greater than" operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpGreater.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpGreater.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpGreater"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpGreater.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpGreater"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpGreater.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical "greater than" operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpGreaterOrEqual">
            <summary>
            Represents logical "greater than or equal" operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpGreaterOrEqual.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpGreaterOrEqual.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpGreaterOrEqual"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpGreaterOrEqual.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpGreaterOrEqual"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpGreaterOrEqual.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical "greater than or equal" operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpLess">
            <summary>
            Represents logical "less than" operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpLess.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpLess.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpEqual"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpLess.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpEqual"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpLess.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical "less than" operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpLessOrEqual">
            <summary>
            Represents logical "less than or equal" operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpLessOrEqual.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpLessOrEqual.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpLessOrEqual"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpLessOrEqual.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpLessOrEqual"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpLessOrEqual.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical "less than or equal" operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpMODULUS">
            <summary>
            Represents arithmetic modulus operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpMODULUS.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpMODULUS.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpMODULUS"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpMODULUS.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpMODULUS"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpMODULUS.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic modulus operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpMULTIPLY">
            <summary>
            Represents arithmetic multiplication operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpMULTIPLY.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpMULTIPLY.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpMULTIPLY"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpMULTIPLY.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpMULTIPLY"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpMULTIPLY.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic multiplication operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpNOT">
            <summary>
            Represents logical NOT operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpNOT.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Expressions.UnaryOperator">
            <summary>
            Base class for unary operators.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: UnaryOperator.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.UnaryOperator.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.UnaryOperator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.UnaryOperator.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.UnaryOperator"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="P:YCH.Expressions.UnaryOperator.Operand">
            <summary>
            Gets the operand.
            </summary>
            <value>The operand.</value>
        </member>
        <member name="M:YCH.Expressions.OpNOT.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpNOT"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpNOT.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpNOT"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpNOT.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical NOT operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpNotEqual">
            <summary>
            Represents logical inequality operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpNotEqual.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpNotEqual.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpNotEqual"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpNotEqual.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpNotEqual"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpNotEqual.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical inequality operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpOR">
            <summary>
            Represents logical OR operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpOR.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpOR.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpOR"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpOR.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpOR"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpOR.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the logical OR operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpPOWER">
            <summary>
            Represents arithmetic exponent operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpPOWER.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpPOWER.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpPOWER"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpPOWER.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpPOWER"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpPOWER.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic exponent operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpSUBTRACT">
            <summary>
            Represents arithmetic subtraction operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpSUBTRACT.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpSUBTRACT.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpSUBTRACT"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpSUBTRACT.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpSUBTRACT"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpSUBTRACT.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the arithmetic subtraction operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpUnaryMinus">
            <summary>
            Represents unary minus operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpUnaryMinus.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpUnaryMinus.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpUnaryMinus"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpUnaryMinus.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpUnaryMinus"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpUnaryMinus.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the unary plus operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.OpUnaryPlus">
            <summary>
            Represents unary plus operator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: OpUnaryPlus.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.OpUnaryPlus.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpUnaryPlus"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.OpUnaryPlus.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.OpUnaryPlus"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.OpUnaryPlus.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the unary plus operator node.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.ProjectionNode">
            <summary>
            Represents parsed projection node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ProjectionNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.ProjectionNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a <see cref="T:System.Collections.IList"/> containing results of evaluation
            of projection expression against each node in the context.
            </summary>
            <param name="context">Context to evaluate projection expression against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.PropertyOrFieldNode">
            <summary>
            Represents node that navigates to object's property or public field.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: PropertyOrFieldNode.cs,v 1.8 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.PropertyOrFieldNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.PropertyOrFieldNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.InitializeNode(System.Object)">
            <summary>
            Initializes the node.
            </summary>
            <param name="context">The parent.</param>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.Set(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.GetPropertyValue(System.Object)">
            <summary>
            Retrieves property value.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <returns>Property value.</returns>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue(System.Object,System.Object)">
            <summary>
            Sets property value, doing any type conversions that are necessary along the way.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal(System.Object,System.Object)">
            <summary>
            Sets property or field value using reflection.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="newValue">New value for this node, converted to appropriate type.</param>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.AddToCollections(System.Object,System.Object)">
            <summary>
            In the case of read only collections or custom collections that are not assignable from
            IList, try to add to the collection.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="newValue">New value for this node.</param>
            <returns>true if was able add to IList, IDictionary, or ISet</returns>
        </member>
        <member name="M:YCH.Expressions.PropertyOrFieldNode.GetPropertyInfo(System.Object)">
            <summary>
            Utility method that is needed by ObjectWrapper and AbstractAutowireCapableObjectFactory.
            We try as hard as we can, but there are instances when we won't be able to obtain PropertyInfo...
            </summary>
            <param name="context">Context to resolve property against.</param>
            <returns>PropertyInfo for this node.</returns>
        </member>
        <member name="P:YCH.Expressions.PropertyOrFieldNode.IsProperty">
            <summary>
            Gets a value indicating whether this node represents a property or a field.
            </summary>
            <value>
            	<c>true</c> if this note is a property; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="T:YCH.Expressions.RealLiteralNode">
            <summary>
            Represents parsed real literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: RealLiteralNode.cs,v 1.5 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.RealLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.RealLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.RealLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.RealLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.RealLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the real literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.ReferenceNode">
            <summary>
            Represents a reference to a Spring-managed object.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ReferenceNode.cs,v 1.4 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.ReferenceNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.ReferenceNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.ReferenceNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.ReferenceNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.ReferenceNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the integer literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.SelectorNode">
            <summary>
            Represents parsed selector node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: SelectorNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.SelectorNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a <see cref="T:System.Collections.IList"/> containing results of evaluation
            of selection expression against each node in the context.
            </summary>
            <param name="context">Context to evaluate selection against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.StringLiteralNode">
            <summary>
            Represents parsed string literal node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: StringLiteralNode.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.StringLiteralNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.StringLiteralNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.StringLiteralNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.StringLiteralNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.StringLiteralNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the string literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.TernaryNode">
            <summary>
            Represents ternary expression node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: TernaryNode.cs,v 1.3 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.TernaryNode.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.TernaryNode"/> class.
            </summary>
        </member>
        <member name="M:YCH.Expressions.TernaryNode.#ctor(antlr.IToken)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Expressions.TernaryNode"/> class.
            </summary>
            <param name="tok">The token.</param>
        </member>
        <member name="M:YCH.Expressions.TernaryNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns a value for the string literal node.
            </summary>
            <param name="context">Object to evaluate node against. Meaningless in this case.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.TypeNode">
            <summary>
            Represents parsed type node in the navigation expression.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: TypeNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.TypeNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns node's value for the given context.
            </summary>
            <param name="context">Object to evaluate node against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="T:YCH.Expressions.VariableNode">
            <summary>
            Represents parsed variable node.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: VariableNode.cs,v 1.2 2006/04/09 07:18:39 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Expressions.VariableNode.Get(System.Object,System.Collections.IDictionary)">
            <summary>
            Returns value of the variable represented by this node.
            </summary>
            <param name="context">Context to evaluate expressions against.</param>
            <param name="variables">Expression variables map.</param>
            <returns>Node's value.</returns>
        </member>
        <member name="M:YCH.Expressions.VariableNode.Set(System.Object,System.Collections.IDictionary,System.Object)">
            <summary>
            Sets value of the variable represented by this node.
            </summary>
            <param name="context">Context to evaluate expressions against.</param>
            <param name="variables">Expression variables map.</param>
            <param name="newValue">New value for this node.</param>
        </member>
        <member name="T:YCH.Globalization.Formatters.CurrencyFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse currency values.
            </summary>
            <remarks>
            <para>
            <c>CurrencyFormatter</c> uses currency related properties of the
            <see cref="T:System.Globalization.NumberFormatInfo"/> to format and parse currency values. 
            </para>
            <para>
            If you use one of the constructors that accept culture as a parameter
            to create an instance of <c>CurrencyFormatter</c>, default <c>NumberFormatInfo</c>
            for the specified culture will be used.
            </para>
            <para>
            You can also use properties exposed by the <c>CurrencyFormatter</c> in order
            to override some of the default currency formatting parameters.
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: CurrencyFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Globalization.IFormatter">
            <summary>
            Interface that should be implemented by all formatters.
            </summary>
            <remarks>
            <para>
            Formatters assume that source value is a string, and make no assumptions
            about the target value's type, which means that <c>Parse</c> method can return
            object of any type. 
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: IFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.IFormatter.Format(System.Object)">
            <summary>
            Formats the specified value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted <paramref name="value"/>.</returns>
        </member>
        <member name="M:YCH.Globalization.IFormatter.Parse(System.String)">
            <summary>
            Parses the specified value.
            </summary>
            <param name="value">The value to parse.</param>
            <returns>Parsed <paramref name="value"/>.</returns>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.CurrencyFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the current thread's culture.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.CurrencyFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="cultureName">The culture name.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.#ctor(System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.CurrencyFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.#ctor(System.Globalization.NumberFormatInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.CurrencyFormatter"/> class
            using specified <see cref="T:System.Globalization.NumberFormatInfo"/>.
            </summary>
            <param name="formatInfo">
            The <see cref="T:System.Globalization.NumberFormatInfo"/> instance that defines how 
            currency values are formatted.
            </param>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.Format(System.Object)">
            <summary>
            Formats the specified currency value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted currency <paramref name="value"/>.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not a number.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.CurrencyFormatter.Parse(System.String)">
            <summary>
            Parses the specified currency value.
            </summary>
            <param name="value">The currency value to parse.</param>
            <returns>Parsed currency value as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.DecimalDigits">
            <summary>
            Gets or sets the currency decimal digits.
            </summary>
            <value>The currency decimal digits.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyDecimalDigits"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.DecimalSeparator">
            <summary>
            Gets or sets the currency decimal separator.
            </summary>
            <value>The currency decimal separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyDecimalSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.GroupSizes">
            <summary>
            Gets or sets the currency group sizes.
            </summary>
            <value>The currency group sizes.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyGroupSizes"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.GroupSeparator">
            <summary>
            Gets or sets the currency group separator.
            </summary>
            <value>The currency group separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyGroupSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.CurrencySymbol">
            <summary>
            Gets or sets the currency symbol.
            </summary>
            <value>The currency symbol.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencySymbol"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.NegativePattern">
            <summary>
            Gets or sets the currency negative pattern.
            </summary>
            <value>The currency negative pattern.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyNegativePattern"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.CurrencyFormatter.PositivePattern">
            <summary>
            Gets or sets the currency positive pattern.
            </summary>
            <value>The currency positive pattern.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.CurrencyPositivePattern"/>
        </member>
        <member name="T:YCH.Globalization.Formatters.DateTimeFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse <see cref="T:System.DateTime"/> values.
            </summary>
            <remarks>
            <para>
            <c>DateTimeFormatter</c> uses properties of the
            <see cref="T:System.Globalization.DateTimeFormatInfo"/> to format and parse <see cref="T:System.DateTime"/> values. 
            </para>
            <para>
            If you use one of the constructors that accept culture as a parameter
            to create an instance of <c>DateTimeFormatter</c>, default <c>DateTimeFormatInfo</c>
            for the specified culture will be used.
            </para>
            <para>
            You can also use properties exposed by the <c>DateTimeFormatter</c> in order
            to override some of the default formatting parameters.
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: DateTimeFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.Formatters.DateTimeFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.DateTimeFormatter"/> class
            using default <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the current thread's culture.
            </summary>
            <param name="format">Date/time format string.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.DateTimeFormatter.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.DateTimeFormatter"/> class
            using default <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the specified culture.
            </summary>
            <param name="format">Date/time format string.</param>
            <param name="cultureName">The culture name.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.DateTimeFormatter.#ctor(System.String,System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.DateTimeFormatter"/> class
            using default <see cref="T:System.Globalization.DateTimeFormatInfo"/> for the specified culture.
            </summary>
            <param name="format">Date/time format string.</param>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.DateTimeFormatter.Format(System.Object)">
            <summary>
            Formats the specified <see cref="T:System.DateTime"/> value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted <see cref="T:System.DateTime"/> value.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not an instance of <see cref="T:System.DateTime"/>.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.DateTimeFormatter.Parse(System.String)">
            <summary>
            Parses the specified value.
            </summary>
            <param name="value">The string to parse.</param>
            <returns>Parsed <see cref="T:System.DateTime"/> value.</returns>
        </member>
        <member name="T:YCH.Globalization.Formatters.FloatFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse floating point numbers.
            </summary>
            <remarks>
            <para>
            This formatter allows you to format and parse numbers that conform 
            to <see cref="F:System.Globalization.NumberStyles.Float"/> number style (leading and trailing 
            white space, leading sign, decimal point, exponent).
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: FloatFormatter.cs,v 1.4 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Globalization.Formatters.FloatFormatter.DefaultFormat">
            <summary>
            Default format string.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.FloatFormatter"/> class,
            using default format string of '{0:F}' and current thread's culture.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.FloatFormatter"/> class,
            using specified format string and current thread's culture.
            </summary>
            <param name="format">The format string.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.#ctor(System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.FloatFormatter"/> class,
            using default format string of '{0:F}' and specified culture.
            </summary>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.FloatFormatter"/> class,
            using specified format string and current thread's culture.
            </summary>
            <param name="format">The format string.</param>
            <param name="cultureName">The culture name.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.#ctor(System.String,System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.FloatFormatter"/> class,
            using specified format string and culture.
            </summary>
            <param name="format">The format string.</param>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.Format(System.Object)">
            <summary>
            Formats the specified float value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted floating point number.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not a number.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.FloatFormatter.Parse(System.String)">
            <summary>
            Parses the specified float value.
            </summary>
            <param name="value">The float value to parse.</param>
            <returns>Parsed float value as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="T:YCH.Globalization.Formatters.IntegerFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse integer numbers.
            </summary>
            <remarks>
            <para>
            This formatter allows you to format and parse numbers that conform 
            to <see cref="F:System.Globalization.NumberStyles.Integer"/> number style (leading and trailing 
            white space, leading sign).
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: IntegerFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.Formatters.IntegerFormatter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.IntegerFormatter"/> class,
            using default format string of '{0:D}'.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.IntegerFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.IntegerFormatter"/> class,
            using specified format string.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.IntegerFormatter.Format(System.Object)">
            <summary>
            Formats the specified integer value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted integer number.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not an integer number.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.IntegerFormatter.Parse(System.String)">
            <summary>
            Parses the specified integer value.
            </summary>
            <param name="value">The integer value to parse.</param>
            <returns>Parsed number value as a <see cref="T:System.Int32"/>.</returns>
        </member>
        <member name="T:YCH.Globalization.Formatters.NumberFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse numbers.
            </summary>
            <remarks>
            <para>
            <c>NumberFormatter</c> uses number-related properties of the
            <see cref="T:System.Globalization.NumberFormatInfo"/> to format and parse numbers. 
            </para>
            <para>
            This formatter works with both integer and decimal numbers and allows
            you to format and parse numbers that conform to <see cref="F:System.Globalization.NumberStyles.Number"/>
            number style (leading and trailing white space and/or sign, thousands separator,
            decimal point)
            </para>
            <para>
            If you use one of the constructors that accept culture as a parameter
            to create an instance of <c>NumberFormatter</c>, default <c>NumberFormatInfo</c>
            for the specified culture will be used.
            </para>
            <para>
            You can also use properties exposed by the <c>NumberFormatter</c> in order
            to override some of the default number formatting parameters.
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: NumberFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.NumberFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the current thread's culture.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.NumberFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="cultureName">The culture name.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.#ctor(System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.NumberFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.#ctor(System.Globalization.NumberFormatInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.NumberFormatter"/> class
            using specified <see cref="T:System.Globalization.NumberFormatInfo"/>.
            </summary>
            <param name="formatInfo">
            The <see cref="T:System.Globalization.NumberFormatInfo"/> instance that defines how 
            numbers are formatted and parsed.
            </param>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.Format(System.Object)">
            <summary>
            Formats the specified number value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted number <paramref name="value"/>.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not a number.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.NumberFormatter.Parse(System.String)">
            <summary>
            Parses the specified number value.
            </summary>
            <param name="value">The number value to parse.</param>
            <returns>Parsed number value as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="P:YCH.Globalization.Formatters.NumberFormatter.DecimalDigits">
            <summary>
            Gets or sets the number of decimal digits.
            </summary>
            <value>The number of decimal digits.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.NumberDecimalDigits"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.NumberFormatter.DecimalSeparator">
            <summary>
            Gets or sets the decimal separator.
            </summary>
            <value>The decimal separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.NumberDecimalSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.NumberFormatter.GroupSizes">
            <summary>
            Gets or sets the number group sizes.
            </summary>
            <value>The number group sizes.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.NumberGroupSizes"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.NumberFormatter.GroupSeparator">
            <summary>
            Gets or sets the number group separator.
            </summary>
            <value>The number group separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.NumberGroupSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.NumberFormatter.NegativePattern">
            <summary>
            Gets or sets the negative pattern.
            </summary>
            <value>The number negative pattern.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.NumberNegativePattern"/>
        </member>
        <member name="T:YCH.Globalization.Formatters.PercentFormatter">
            <summary>
            Implementation of <see cref="T:YCH.Globalization.IFormatter"/> that can be used to
            format and parse numbers.
            </summary>
            <remarks>
            <para>
            <c>PercentFormatter</c> uses percent-related properties of the
            <see cref="T:System.Globalization.NumberFormatInfo"/> to format and parse percentages. 
            </para>
            <para>
            If you use one of the constructors that accept culture as a parameter
            to create an instance of <c>PercentFormatter</c>, default <c>NumberFormatInfo</c>
            for the specified culture will be used.
            </para>
            <para>
            You can also use properties exposed by the <c>PercentFormatter</c> in order
            to override some of the default number formatting parameters.
            </para>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: PercentFormatter.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.PercentFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the current thread's culture.
            </summary>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.PercentFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="cultureName">The culture name.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.#ctor(System.Globalization.CultureInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.PercentFormatter"/> class
            using default <see cref="T:System.Globalization.NumberFormatInfo"/> for the specified culture.
            </summary>
            <param name="culture">The culture.</param>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.#ctor(System.Globalization.NumberFormatInfo)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Globalization.Formatters.PercentFormatter"/> class
            using specified <see cref="T:System.Globalization.NumberFormatInfo"/>.
            </summary>
            <param name="formatInfo">
            The <see cref="T:System.Globalization.NumberFormatInfo"/> instance that defines how 
            numbers are formatted and parsed.
            </param>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.Format(System.Object)">
            <summary>
            Formats the specified percentage value.
            </summary>
            <param name="value">The value to format.</param>
            <returns>Formatted percentage.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="value"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">If <paramref name="value"/> is not a number.</exception>
        </member>
        <member name="M:YCH.Globalization.Formatters.PercentFormatter.Parse(System.String)">
            <summary>
            Parses the specified percentage value.
            </summary>
            <param name="value">The percentage value to parse.</param>
            <returns>Parsed percentage value as a <see cref="T:System.Double"/>.</returns>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.DecimalDigits">
            <summary>
            Gets or sets the number of decimal digits.
            </summary>
            <value>The number of decimal digits.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentDecimalDigits"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.DecimalSeparator">
            <summary>
            Gets or sets the decimal separator.
            </summary>
            <value>The decimal separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentDecimalSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.GroupSizes">
            <summary>
            Gets or sets the percent group sizes.
            </summary>
            <value>The percent group sizes.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentGroupSizes"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.GroupSeparator">
            <summary>
            Gets or sets the percent group separator.
            </summary>
            <value>The percent group separator.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentGroupSeparator"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.NegativePattern">
            <summary>
            Gets or sets the negative pattern.
            </summary>
            <value>The percent negative pattern.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentNegativePattern"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.PositivePattern">
            <summary>
            Gets or sets the positive pattern.
            </summary>
            <value>The percent positive pattern.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentPositivePattern"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.PercentSymbol">
            <summary>
            Gets or sets the percent symbol.
            </summary>
            <value>The percent symbol.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PercentSymbol"/>
        </member>
        <member name="P:YCH.Globalization.Formatters.PercentFormatter.PerMilleSymbol">
            <summary>
            Gets or sets the per mille symbol.
            </summary>
            <value>The per mille symbol.</value>
            <seealso cref="P:System.Globalization.NumberFormatInfo.PerMilleSymbol"/>
        </member>
        <member name="T:YCH.Globalization.Localizers.ResourceSetLocalizer">
            <summary>
            Loads a list of resources that should be applied from the .NET <see cref="T:System.Resources.ResourceSet"/>.
            </summary>
            <remarks>
            <p>
            This <see cref="T:YCH.Globalization.ILocalizer"/> implementation will iterate over all resource managers 
            within the message source and return a list of all the resources whose name starts with '$this'.
            </p>
            <p>
            All other resources will be ignored, but you can retrieve them by calling one of 
            <c>GetMessage</c> methods on the message source directly.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ResourceSetLocalizer.cs,v 1.10 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Globalization.AbstractLocalizer">
            <summary>
            Abstract base class that all localizers should extend
            </summary>
            <remarks>
            <p>
            This class contains the bulk of the localizer logic, including implementation
            of the <c>ApplyResources</c> methods that are defined in <see cref="T:YCH.Globalization.ILocalizer"/>
            interface.
            </p>
            <p>
            All specific localizers need to do is inherit this class and implement 
            <c>GetResources</c> method that will return a list of <see cref="T:YCH.Globalization.Resource"/>
            objects that should be applied to a specified <c>target</c>.
            </p>
            <p>
            Custom implementations can use whatever type of resource storage they want,
            such as standard .NET resource sets, custom XML files, database, etc.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: AbstractLocalizer.cs,v 1.4 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Globalization.ILocalizer">
            <summary>
            Defines an interface that localizers have to implement.
            </summary>
            <remarks>
            <p>
            Localizers are used to automatically apply resources to object's members
            using reflection.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ILocalizer.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.ILocalizer.ApplyResources(System.Object,YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Applies resources of the specified culture to the specified target object.
            </summary>
            <param name="target">Target object to apply resources to.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
            <param name="culture">Resource culture to use for resource lookup.</param>
        </member>
        <member name="M:YCH.Globalization.ILocalizer.ApplyResources(System.Object,YCH.Context.IMessageSource)">
            <summary>
            Applies resources to the specified target object, using current thread's culture to resolve resources.
            </summary>
            <param name="target">Target object to apply resources to.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
        </member>
        <member name="P:YCH.Globalization.ILocalizer.ResourceCache">
            <summary>
            Gets or sets the resource cache instance.
            </summary>
            <value>The resource cache instance.</value>
        </member>
        <member name="M:YCH.Globalization.AbstractLocalizer.ApplyResources(System.Object,YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Applies resources of the specified culture to the specified target object.
            </summary>
            <param name="target">Target object to apply resources to.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
            <param name="culture">Resource culture to use for resource lookup.</param>
        </member>
        <member name="M:YCH.Globalization.AbstractLocalizer.ApplyResources(System.Object,YCH.Context.IMessageSource)">
            <summary>
            Applies resources to the specified target object, using current thread's culture to resolve resources.
            </summary>
            <param name="target">Target object to apply resources to.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
        </member>
        <member name="M:YCH.Globalization.AbstractLocalizer.GetResources(System.Object,YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Returns a list of <see cref="T:YCH.Globalization.Resource"/> instances that should be applied to the target.
            </summary>
            <param name="target">Target to get a list of resources for.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
            <param name="culture">Resource locale.</param>
            <returns>A list of resources to apply.</returns>
        </member>
        <member name="M:YCH.Globalization.AbstractLocalizer.LoadResources(System.Object,YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Loads resources from the storage and creates a list of <see cref="T:YCH.Globalization.Resource"/> instances that should be applied to the target.
            </summary>
            <param name="target">Target to get a list of resources for.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
            <param name="culture">Resource locale.</param>
            <returns>A list of resources to apply.</returns>
        </member>
        <member name="P:YCH.Globalization.AbstractLocalizer.ResourceCache">
            <summary>
            Gets or sets the resource cache instance.
            </summary>
            <value>The resource cache instance.</value>
        </member>
        <member name="M:YCH.Globalization.Localizers.ResourceSetLocalizer.LoadResources(System.Object,YCH.Context.IMessageSource,System.Globalization.CultureInfo)">
            <summary>
            Loads resources from the storage and creates a list of <see cref="T:YCH.Globalization.Resource"/> instances that should be applied to the target.
            </summary>
            <remarks>
            This feature is not currently supported on version 1.0 of the .NET platform.
            </remarks>
            <param name="target">Target to get a list of resources for.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> instance to retrieve resources from.</param>
            <param name="culture">Resource locale.</param>
            <returns>A list of resources to apply.</returns>
        </member>
        <member name="T:YCH.Globalization.Resolvers.DefaultCultureResolver">
            <summary>
            <see cref="T:YCH.Globalization.ICultureResolver"/> implementation
            that simply returns the <see cref="T:System.Globalization.CultureInfo"/>
            value of the
            <see cref="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture"/>
            property (if said property value is not <cref lang="null"/>), or the
            <see cref="T:System.Globalization.CultureInfo"/> of the current thread if it is
            <cref lang="null"/>.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: DefaultCultureResolver.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Globalization.ICultureResolver">
            <summary>
            Strategy interface for <see cref="T:System.Globalization.CultureInfo"/>
            resolution.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ICultureResolver.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.ICultureResolver.ResolveCulture">
            <summary>
            Resolves the <see cref="T:System.Globalization.CultureInfo"/>
            from some context.
            </summary>
            <remarks>
            <p>
            The 'context' is determined by the appropriate implementation class.
            An example of such a context might be a thread local bound
            <see cref="T:System.Globalization.CultureInfo"/>, or a
            <see cref="T:System.Globalization.CultureInfo"/> sourced from an HTTP
            session.
            </p>
            </remarks>
            <returns>
            The <see cref="T:System.Globalization.CultureInfo"/> that should be used
            by the caller.
             </returns>
        </member>
        <member name="M:YCH.Globalization.ICultureResolver.SetCulture(System.Globalization.CultureInfo)">
            <summary>
            Sets the <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <remarks>
            <p>
            This is an optional operation and does not need to be implemented
            such that it actually does anything useful (i.e. it can be a no-op).
            </p>
            </remarks>
            <param name="culture">
            The new <see cref="T:System.Globalization.CultureInfo"/> or
            <cref lang="null"/> to clear the current <see cref="T:System.Globalization.CultureInfo"/>.
            </param>
        </member>
        <member name="M:YCH.Globalization.Resolvers.DefaultCultureResolver.GetDefaultLocale">
            <summary>
            Returns the default <see cref="T:System.Globalization.CultureInfo"/>. 
            </summary>
            <remarks>
            <p>
            It tries to get the <see cref="T:System.Globalization.CultureInfo"/>
            from the value of the
            <see cref="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture"/>
            property and falls back to the <see cref="T:System.Globalization.CultureInfo"/> of the
            current thread if the
            <see cref="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture"/>
            is <cref lang="null"/>.
            </p>
            </remarks>
            <returns>
            The default <see cref="T:System.Globalization.CultureInfo"/>
            </returns>
        </member>
        <member name="M:YCH.Globalization.Resolvers.DefaultCultureResolver.ResolveCulture">
            <summary>
            Resolves the <see cref="T:System.Globalization.CultureInfo"/>
            from some context.
            </summary>
            <remarks>
            <p>
            The 'context' in this implementation is the
            <see cref="T:System.Globalization.CultureInfo"/> value of the
            <see cref="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture"/>
            property (if said property value is not <cref lang="null"/>), or the
            <see cref="T:System.Globalization.CultureInfo"/> of the current thread if it is
            <cref lang="null"/>.
            </p>
            </remarks>
            <returns>
            The <see cref="T:System.Globalization.CultureInfo"/> that should be used
            by the caller.
             </returns>
        </member>
        <member name="M:YCH.Globalization.Resolvers.DefaultCultureResolver.SetCulture(System.Globalization.CultureInfo)">
            <summary>
            Sets the <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <param name="culture">
            The new <see cref="T:System.Globalization.CultureInfo"/> or
            <cref lang="null"/> to clear the current <see cref="T:System.Globalization.CultureInfo"/>.
            </param>
            <seealso cref="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture"/>
            <seealso cref="M:YCH.Globalization.ICultureResolver.SetCulture(System.Globalization.CultureInfo)"/>
        </member>
        <member name="P:YCH.Globalization.Resolvers.DefaultCultureResolver.DefaultCulture">
            <summary>
            The default <see cref="T:System.Globalization.CultureInfo"/>.
            </summary>
            <value>
            The default <see cref="T:System.Globalization.CultureInfo"/>.
            </value>
        </member>
        <member name="T:YCH.Globalization.AbstractResourceCache">
            <summary>
            Abstract base class that all resource cache implementations should extend.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: AbstractResourceCache.cs,v 1.3 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Globalization.IResourceCache">
            <summary>
            Defines an interface that resource cache adapters have to implement.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IResourceCache.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.IResourceCache.GetResources(System.Object,System.Globalization.CultureInfo)">
            <summary>
            Gets the list of resources from cache.
            </summary>
            <param name="target">Target to get a list of resources for.</param>
            <param name="culture">Resource culture.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="M:YCH.Globalization.IResourceCache.PutResources(System.Object,System.Globalization.CultureInfo,System.Collections.IList)">
            <summary>
            Puts the list of resources in the cache.
            </summary>
            <param name="target">Target to cache a list of resources for.</param>
            <param name="culture">Resource culture.</param>
            <param name="resources">A list of resources to cache.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="M:YCH.Globalization.AbstractResourceCache.GetResources(System.Object,System.Globalization.CultureInfo)">
            <summary>
            Gets the list of resources from the cache.
            </summary>
            <param name="target">Target to get a list of resources for.</param>
            <param name="culture">Resource culture.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="M:YCH.Globalization.AbstractResourceCache.PutResources(System.Object,System.Globalization.CultureInfo,System.Collections.IList)">
            <summary>
            Puts the list of resources in the cache.
            </summary>
            <param name="target">Target to cache a list of resources for.</param>
            <param name="culture">Resource culture.</param>
            <param name="resources">A list of resources to cache.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="M:YCH.Globalization.AbstractResourceCache.CreateCacheKey(System.Object,System.Globalization.CultureInfo)">
            <summary>
            Crates resource cache key for the specified target object and culture.
            </summary>
            <param name="target">Target object to apply resources to.</param>
            <param name="culture">Resource culture to use for resource lookup.</param>
        </member>
        <member name="M:YCH.Globalization.AbstractResourceCache.GetResources(System.String)">
            <summary>
            Gets the list of resources from cache.
            </summary>
            <param name="cacheKey">Cache key to use for lookup.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="M:YCH.Globalization.AbstractResourceCache.PutResources(System.String,System.Collections.IList)">
            <summary>
            Puts the list of resources in the cache.
            </summary>
            <param name="cacheKey">Cache key to use for the specified resources.</param>
            <param name="resources">A list of resources to cache.</param>
            <returns>A list of cached resources for the specified target object and culture.</returns>
        </member>
        <member name="T:YCH.Globalization.NullResourceCache">
            <summary>
            Resource cache implementation that doesn't cache resources.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: NullResourceCache.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.NullResourceCache.GetResources(System.String)">
            <summary>
            Gets the list of resources from cache.
            </summary>
            <param name="cacheKey">Cache key to use for lookup.</param>
            <returns>Always returns <c>null</c>.</returns>
        </member>
        <member name="M:YCH.Globalization.NullResourceCache.PutResources(System.String,System.Collections.IList)">
            <summary>
            Puts the list of resources in the cache.
            </summary>
            <param name="cacheKey">Cache key to use for the specified resources.</param>
            <param name="resources">A list of resources to cache.</param>
        </member>
        <member name="T:YCH.Globalization.Resource">
            <summary>
            Holds mapping between control property and it's value 
            as read from the resource file.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: Resource.cs,v 1.3 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Globalization.Resource.#ctor(YCH.Expressions.IExpression,System.Object)">
            <summary>
            Creates instance of resource mapper.
            </summary>
            <param name="target">Target property.</param>
            <param name="resourceValue">Resource value.</param>
        </member>
        <member name="P:YCH.Globalization.Resource.Target">
            <summary>
            Gets parsed target property expression. See <see cref="T:YCH.Expressions.IExpression"/>
            for more information on object navigation expressions.
            </summary>
        </member>
        <member name="P:YCH.Globalization.Resource.Value">
            <summary>
            Value of the resource that target property should be set to.
            </summary>
        </member>
        <member name="T:YCH.Objects.Events.Support.EventManipulationUtils">
            <summary>
            Utility class to aid in the manipulation of events and delegates.
            </summary>
            <author>Griffin Caprio</author>
            <version>$Id: EventManipulationUtils.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventManipulationUtils.GetHandlerDelegate(System.Type,System.Object,System.Reflection.MethodInfo)">
            <summary>
            Returns a new instance of the requested <see cref="T:System.Delegate"/>.
            </summary>
            <remarks>
            <p>
            Often used to wire subscribers to event publishers.
            </p>
            </remarks>
            <param name="delegateType">
            The <see cref="T:System.Type"/> of delegate to create.
            </param>
            <param name="targetSubscriber">
            The target subscriber object that contains the delegate implementation.
            </param>
            <param name="targetSubscriberDelegateMethod">
            <see cref="T:System.Reflection.MethodInfo"/> referencing the delegate method on the subscriber.
            </param>
            <returns>
            A delegate handler that can be added to an events list of handlers, or called directly.
            </returns>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventManipulationUtils.GetMethodInfoMatchingSignature(System.Reflection.MethodInfo,System.Type)">
            <summary>
            Queries the input type for a <see cref="T:System.Reflection.MethodInfo"/> signature matching the input
            <see cref="T:System.Reflection.MethodInfo"/> signature.
            </summary>
            <remarks>
            Typically used to query a potential subscriber to see if they implement an event handler.
            </remarks>
            <param name="invoke"><see cref="T:System.Reflection.MethodInfo"/> to match against</param>
            <param name="subscriberType"><see cref="T:System.Type"/> to query</param>
            <returns>
            <see cref="T:System.Reflection.MethodInfo"/> matching input <see cref="T:System.Reflection.MethodInfo"/>
            signature, or <see langword="null"/> if there is no match.
            </returns>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventManipulationUtils.#ctor">
            <summary>
            Creates a new instance of the EventManipulationUtilities class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly visible constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Events.Support.EventRegistry">
            <summary>
            Default implementation of the <see cref="T:YCH.Objects.Events.IEventRegistry"/>
            interface.
            </summary>
            <author>Griffin Caprio</author>
            <version>$Id: EventRegistry.cs,v 1.7 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventRegistry.#ctor">
            <summary>
            Creates a new instance of the EventRegistry class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventRegistry.PublishEvents(System.Object)">
            <summary>
            Adds the input object to the list of publishers.
            </summary>
            <remarks>
            This publishes <b>all</b> events of the source object to any object
            wishing to subscribe
            </remarks>
            <param name="source">The source object to publish.</param>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventRegistry.Subscribe(System.Object)">
            <summary>
            Subscribes to <b>all</b> events published, if the subscriber implements
            compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
        </member>
        <member name="M:YCH.Objects.Events.Support.EventRegistry.Subscribe(System.Object,System.Type)">
            <summary>
            Subscribes to published events of all objects of a given type, if the
            subscriber implements compatible handler methods.
            </summary>
            <param name="subscriber">The subscriber to use.</param>
            <param name="sourceType">
            The target <see cref="T:System.Type"/> to subscribe to.
            </param>
        </member>
        <member name="P:YCH.Objects.Events.Support.EventRegistry.Publishers">
            <summary>
            The list of event publishers.
            </summary>
            <value>The list of event publishers.</value>
        </member>
        <member name="T:YCH.Objects.Events.IEventRegistryAware">
            <summary>
            To be implemented by any object that wishes to receive a reference to
            an <see cref="T:YCH.Objects.Events.IEventRegistry"/>.
            </summary>
            <remarks>
            <p>
            This interface only applies to objects that have been instantiated
            within the context of an
            <see cref="T:YCH.Context.IApplicationContext"/>. This interface does
            not typically need to be implemented by application code, but is rather
            used by classes internal to YCH.NET.
            </p>
            </remarks>
            <author>Mark Pollack</author>
            <author>Rick Evans</author>
            <version>$Id: IEventRegistryAware.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Objects.Events.IEventRegistryAware.EventRegistry">
            <summary>
            Set the <see cref="T:YCH.Objects.Events.IEventRegistry"/>
            associated with the
            <see cref="T:YCH.Context.IApplicationContext"/> that created this
            object.
            </summary>
            <remarks>
            <p>
            This property will be set by the relevant
            <see cref="T:YCH.Context.IApplicationContext"/> after all of this
            object's dependencies have been resolved. This object can use the
            supplied <see cref="T:YCH.Objects.Events.IEventRegistry"/>
            immediately to publish or subscribe to one or more events.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Config.AbstractFactoryObject">
            <summary>
            Simple template superclass for <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            implementations that allows for the creation of a singleton or a prototype
            instance (depending on a flag).
            </summary>
            <remarks>
            If the value of the 
            <see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
            property is <see langword="true"/> (this is the default), this class
            will create a single instance of it's object upon initialization and
            subsequently return the singleton instance; else, this class will
            create a new instance each time (prototype mode). Subclasses must
            implement the <see langword="abstract"/>
            <see cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.CreateInstance"/>
            template method to actually create objects.
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Keith Donald</author>
            <author>Simon White (.NET)</author>
            <version>$Id: AbstractFactoryObject.cs,v 1.12 2005/12/14 10:24:21 springboy Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IFactoryObject">
            <summary>
            Interface to be implemented by objects used within an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> that are themselves
            factories.
            </summary>
            <remarks>
            <p>
            If an object implements this interface, it is used as a factory,
            not directly as an object. <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s
            can support singletons and prototypes
            (<see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>)...
            please note that an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            itself can only ever be a singleton. It is a logic error to configure an
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> itself to be a prototype.
            </p>
            <note type="caution">
            An object that implements this interface cannot be used as a normal object.
            </note>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IFactoryObject.cs,v 1.6 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.IFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <remarks>
            <note type="caution">
            If this method is being called in the context of an enclosing IoC container and
            returns <see langword="null"/>, the IoC container will consider this factory
            object as not being fully initialized and throw a corresponding (and most
            probably fatal) exception.
            </note>
            </remarks>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.IFactoryObject.ObjectType">
            <summary>
            Return the <see cref="T:System.Type"/> of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <see langword="null"/> if not known in advance.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.IFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.AbstractFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has injected all of an object's dependencies.
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as the failure to set a
            required property) or if initialization fails.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.AbstractFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.AbstractFactoryObject.CreateInstance">
            <summary>
            Template method that subclasses must override to construct
            the object returned by this factory.
            </summary>
            <remarks>
            Invoked once immediately after the initialization of this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> in the case of
            a singleton; else, on each call to the
            <see cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
            method.
            </remarks>
            <exception cref="T:System.Exception">
            If an exception occured during object creation.
            </exception>
            <returns>
            A distinct instance of the object created by this factory.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.AbstractFactoryObject.Dispose">
            <summary>
            Performs cleanup on any cached singleton object.
            </summary>
            <remarks>
            <p>
            Only makes sense in the context of a singleton object.
            </p>
            </remarks>
            <see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
            <seealso cref="M:System.IDisposable.Dispose"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.AbstractFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
            <remarks>
            <p>
            Please note that changing the value of this property <b>after</b>
            this factory object instance has been created by an enclosing
            YCH.NET IoC container really is a programming error. This
            property should really only be set once, prior to the invocation
            of the
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            callback method.
            </p>
            </remarks>
            <see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.AbstractFactoryObject.ObjectType">
            <summary>
            Return the <see cref="T:System.Type"/> of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <see langword="null"/> if not known in advance.
            </summary>
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.AutoWiringMode">
            <summary>
            The various autowiring modes.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: AutoWiringMode.cs,v 1.7 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Config.AutoWiringMode.No">
            <summary>
            Do not autowire.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.AutoWiringMode.ByName">
            <summary>
            Autowire by name.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.AutoWiringMode.ByType">
            <summary>
            Autowire by <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.AutoWiringMode.Constructor">
            <summary>
            Autowiring by constructor.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.AutoWiringMode.AutoDetect">
            <summary>
            The autowiring strategy is to be determined by introspection
            of the object's <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ConfigurationReader">
            <summary>
            Various utility methods for .NET style .config files. 
            </summary>
            <remarks>
            <p>
            Currently supports reading custom configuration sections and returning them as 
            <see cref="T:System.Collections.Specialized.NameValueCollection"/> objects.
            </p>
            </remarks>
            <author>Simon White</author>
            <author>Mark Pollack</author>
            <version>$Id: ConfigurationReader.cs,v 1.12 2006/01/31 20:08:15 aseovic Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.Read(YCH.Core.IO.IResource,System.String)">
            <summary>
            Reads the specified configuration section into a
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </summary>
            <param name="resource">The resource to read.</param>
            <param name="configSection">The section name.</param>
            <returns>
            A newly populated
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </returns>
            <exception cref="T:System.IO.IOException">
            If any errors are encountered while attempting to open a stream
            from the supplied <paramref name="resource"/>.
            </exception>
            <exception cref="T:System.Xml.XmlException">
            If any errors are encountered while loading or reading (this only applies to
            v1.1 and greater of the .NET Framework) the actual XML.
            </exception>
            <exception cref="T:System.Exception">
            If any errors are encountered while loading or reading (this only applies to
            v1.0 of the .NET Framework).
            </exception>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the configuration section was otherwise invalid.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.Read(YCH.Core.IO.IResource,System.String,System.Collections.Specialized.NameValueCollection)">
            <summary>
            Reads the specified configuration section into the supplied
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </summary>
            <param name="resource">The resource to read.</param>
            <param name="configSection">The section name.</param>
            <param name="properties">
            The collection that is to be populated. May be
            <see langword="null"/>.
            </param>
            <returns>
            A newly populated
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </returns>
            <exception cref="T:System.IO.IOException">
            If any errors are encountered while attempting to open a stream
            from the supplied <paramref name="resource"/>.
            </exception>
            <exception cref="T:System.Xml.XmlException">
            If any errors are encountered while loading or reading (this only applies to
            v1.1 and greater of the .NET Framework) the actual XML.
            </exception>
            <exception cref="T:System.Exception">
            If any errors are encountered while loading or reading (this only applies to
            v1.0 of the .NET Framework).
            </exception>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the configuration section was otherwise invalid.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.Read(YCH.Core.IO.IResource,System.String,System.Collections.Specialized.NameValueCollection,System.Boolean)">
            <summary>
            Reads the specified configuration section into the supplied
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </summary>
            <param name="resource">The resource to read.</param>
            <param name="configSection">The section name.</param>
            <param name="properties">
            The collection that is to be populated. May be
            <see langword="null"/>.
            </param>
            <param name="overrideValues">
            If a key already exists, is its value to be appended to the current
            value or replaced?
            </param>
            <returns>
            The populated
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </returns>
            <exception cref="T:System.IO.IOException">
            If any errors are encountered while attempting to open a stream
            from the supplied <paramref name="resource"/>.
            </exception>
            <exception cref="T:System.Xml.XmlException">
            If any errors are encountered while loading or reading (this only applies to
            v1.1 and greater of the .NET Framework) the actual XML.
            </exception>
            <exception cref="T:System.Exception">
            If any errors are encountered while loading or reading (this only applies to
            v1.0 of the .NET Framework).
            </exception>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the configuration section was otherwise invalid.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.ReadFromXmlDocument(System.Xml.XmlDocument,System.String)">
            <summary>
            Read from the specified configuration from the supplied XML
            <paramref name="document"/> into a
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </summary>
            <remarks>
            <note>
            Does <b>not</b> support section grouping. The supplied XML
            <paramref name="document"/> must already be loaded.
            </note>
            </remarks>
            <param name="document">
            The <see cref="T:System.Xml.XmlDocument"/> to read from.
            </param>
            <param name="configSectionName">
            The configuration section name to read.
            </param>
            <returns>
            A newly populated
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>.
            </returns>
            <exception cref="T:System.Xml.XmlException">
            If any errors are encountered while reading (this only applies to
            v1.1 and greater of the .NET Framework).
            </exception>
            <exception cref="T:System.Exception">
            If any errors are encountered while reading (this only applies to
            v1.0 of the .NET Framework).
            </exception>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the configuration section was otherwise invalid.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.PopulateFromAppConfig(System.Collections.Specialized.NameValueCollection,System.String,System.Boolean)">
            <summary>
            Populates the supplied <paramref name="properties"/> with values from
            a .NET application configuration file.
            </summary>
            <param name="properties">
            The <see cref="T:System.Collections.Specialized.NameValueCollection"/>
            to add any key-value pairs to.
            </param>
            <param name="configSectionName">
            The configuration section name in the a .NET application configuration
            file.
            </param>
            <param name="overrideValues">
            If a key already exists, is its value to be appended to the current
            value or replaced?
            </param>
            <returns>
            <see langword="true"/> if the supplied
            <paramref name="configSectionName"/> was found.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConfigurationReader.#ctor">
            <summary>
            Creates a new instance of the ConfigurationReader class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly visible
            constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ConstructorArgumentValues">
            <summary>
            Holder for constructor argument values for an object.
            </summary>
            <remarks>
            <p>
            Supports values for a specific index or parameter name (case
            insensitive) in the constructor argument list, and generic matches by
            <see cref="P:System.Type.FullName"/>.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ConstructorArgumentValues.cs,v 1.14 2006/04/09 07:18:47 markpollack Exp $</version>
            <see cref="P:YCH.Objects.Factory.Config.IObjectDefinition.ConstructorArgumentValues"/>
        </member>
        <member name="F:YCH.Objects.Factory.Config.ConstructorArgumentValues.NoIndex">
            <summary>
            Can be used as an argument filler for the
            <see cref="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.Int32,System.String,System.Type,YCH.Collections.ISet)"/>
            overload when one is not looking for an argument by index.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.#ctor(YCH.Objects.Factory.Config.ConstructorArgumentValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            class.
            </summary>
            <param name="other">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be used to populate this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddAll(YCH.Objects.Factory.Config.ConstructorArgumentValues)">
            <summary>
            Copy all given argument values into this object.
            </summary>
            <param name="other">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be used to populate this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddIndexedArgumentValue(System.Int32,System.Object)">
            <summary>
            Add argument value for the given index in the constructor argument list.
            </summary>
            <param name="index">
            The index in the constructor argument list.
            </param>
            <param name="value">
            The argument value.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddIndexedArgumentValue(System.Int32,System.Object,System.String)">
            <summary>
            Add argument value for the given index in the constructor argument list.
            </summary>
            <param name="index">The index in the constructor argument list.</param>
            <param name="value">The argument value.</param>
            <param name="type">
            The <see cref="P:System.Type.FullName"/> of the argument
            <see cref="T:System.Type"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddNamedArgumentValue(System.String,System.Object)">
            <summary>
            Add argument value for the given name in the constructor argument list.
            </summary>
            <param name="name">The name in the constructor argument list.</param>
            <param name="value">The argument value.</param>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="name"/> is <see langword="null"/>
            or is composed wholly of whitespace.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetIndexedArgumentValue(System.Int32,System.Type)">
            <summary>
            Get argument value for the given index in the constructor argument list.
            </summary>
            <param name="index">The index in the constructor argument list.</param>
            <param name="requiredType">
            The required <see cref="T:System.Type"/> of the argument.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetNamedArgumentValue(System.String)">
            <summary>
            Get argument value for the given name in the constructor argument list.
            </summary>
            <param name="name">The name in the constructor argument list.</param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.ContainsNamedArgument(System.String)">
            <summary>
            Does this set of constructor arguments contain a named argument matching the
            supplied <paramref name="argument"/> name?
            </summary>
            <remarks>
            <note>
            The comparison is performed in a case-insensitive fashion.
            </note>
            </remarks>
            <param name="argument">The named argument to look up.</param>
            <returns>
            <see langword="true"/> if this set of constructor arguments
            contains a named argument matching the supplied
            <paramref name="argument"/> name.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddGenericArgumentValue(System.Object)">
            <summary>
            Add generic argument value to be matched by type.
            </summary>
            <param name="value">
            The argument value.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.AddGenericArgumentValue(System.Object,System.String)">
            <summary>
            Add generic argument value to be matched by type.
            </summary>
            <param name="value">The argument value.</param>
            <param name="type">
            The <see cref="P:System.Type.FullName"/> of the argument
            <see cref="T:System.Type"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetGenericArgumentValue(System.Type)">
            <summary>
            Look for a generic argument value that matches the given
            <see cref="T:System.Type"/>.
            </summary>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetGenericArgumentValue(System.Type,YCH.Collections.ISet)">
            <summary>
            Look for a generic argument value that matches the given
            <see cref="T:System.Type"/>.
            </summary>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <param name="usedValues">
            A <see cref="T:YCH.Collections.ISet"/> of
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            objects that have already been used in the current resolution
            process and should therefore not be returned again; this allows one
            to return the next generic argument match in the case of multiple
            generic argument values of the same type.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.Int32,System.Type)">
            <summary>
            Look for an argument value that either corresponds to the given index
            in the constructor argument list or generically matches by
            <see cref="T:System.Type"/>.
            </summary>
            <param name="index">
            The index in the constructor argument list.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none is set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.Int32,System.Type,YCH.Collections.ISet)">
            <summary>
            Look for an argument value that either corresponds to the given index
            in the constructor argument list or generically matches by
            <see cref="T:System.Type"/>.
            </summary>
            <param name="index">
            The index in the constructor argument list.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <param name="usedValues">
            A <see cref="T:YCH.Collections.ISet"/> of
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            objects that have already been used in the current resolution
            process and should therefore not be returned again; this allows one
            to return the next generic argument match in the case of multiple
            generic argument values of the same type.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none is set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.String,System.Type)">
            <summary>
            Look for an argument value that either corresponds to the given index
            in the constructor argument list or generically matches by
            <see cref="T:System.Type"/>.
            </summary>
            <param name="name">
            The name of the argument in the constructor argument list. May be
            <see langword="null"/>, in which case generic matching by 
            <see cref="T:System.Type"/> is assumed.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none is set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.String,System.Type,YCH.Collections.ISet)">
            <summary>
            Look for an argument value that either corresponds to the given index
            in the constructor argument list or generically matches by
            <see cref="T:System.Type"/>.
            </summary>
            <param name="name">
            The name of the argument in the constructor argument list. May be
            <see langword="null"/>, in which case generic matching by 
            <see cref="T:System.Type"/> is assumed.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <param name="usedValues">
            A <see cref="T:YCH.Collections.ISet"/> of
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            objects that have already been used in the current resolution
            process and should therefore not be returned again; this allows one
            to return the next generic argument match in the case of multiple
            generic argument values of the same type.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none is set.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.GetArgumentValue(System.Int32,System.String,System.Type,YCH.Collections.ISet)">
            <summary>
            Look for an argument value that either corresponds to the given index
            in the constructor argument list, or to the named argument, or
            generically matches by <see cref="T:System.Type"/>.
            </summary>
            <param name="index">
            The index of the argument in the constructor argument list. May be
            negative, to denote the fact that we are not looking for an
            argument by index (see
            <see cref="F:YCH.Objects.Factory.Config.ConstructorArgumentValues.NoIndex"/>.
            </param>
            <param name="name">
            The name of the argument in the constructor argument list. May be
            <see langword="null"/>.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> to match.
            </param>
            <param name="usedValues">
            A <see cref="T:YCH.Collections.ISet"/> of
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            objects that have already been used in the current resolution
            process and should therefore not be returned again; this allows one
            to return the next generic argument match in the case of multiple
            generic argument values of the same type.
            </param>
            <returns>
            The
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>
            for the argument, or <see langword="null"/> if none is set.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.IndexedArgumentValues">
            <summary>
            Return the map of indexed argument values.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> with
            <see cref="T:System.Int32"/> indices as keys and
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>s
            as values.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.NamedArgumentValues">
            <summary>
            Return the map of named argument values.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> with
            <see cref="T:System.String"/> named arguments as keys and
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>s
            as values.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.GenericArgumentValues">
            <summary>
            Return the set of generic argument values.
            </summary>
            <returns>
            A <see cref="T:System.Collections.IList"/> of
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder"/>s.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.ArgumentCount">
            <summary>
            Return the number of arguments held in this instance.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.Empty">
            <summary>
            Returns true if this holder does not contain any argument values,
            neither indexed ones nor generic ones.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder">
            <summary>
            Holder for a constructor argument value, with an optional
            <see cref="T:System.Type"/> attribute indicating the target
            <see cref="T:System.Type"/> of the actual constructor argument.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder.#ctor(System.Object)">
            <summary>
            Creates a new instance of the ValueHolder class.
            </summary>
            <param name="value">
            The value of the constructor argument.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder.#ctor(System.Object,System.String)">
            <summary>
            Creates a new instance of the ValueHolder class.
            </summary>
            <param name="value">
            The value of the constructor argument.
            </param>
            <param name="typeName">
            The <see cref="P:System.Type.FullName"/> of the argument
            <see cref="T:System.Type"/>. Can also be one of the common
            <see cref="T:System.Type"/> aliases (<c>int</c>, <c>bool</c>,
            <c>float</c>, etc).
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder.ToString">
            <summary>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder.Value">
            <summary>
            Gets and sets the value for the constructor argument.
            </summary>
            <remarks>
            <p>
            Only necessary for manipulating a registered value, for example in
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>s.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ConstructorArgumentValues.ValueHolder.Type">
            <summary>
            Return the <see cref="P:System.Type.FullName"/> of the constructor
            argument.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.CustomConverterConfigurer">
            <summary>
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            implementation that allows for convenient registration of custom
            <see cref="T:System.ComponentModel.TypeConverter"/>s.
            </summary>
            <remarks>
            <note>
            The use of this class is <i>typically</i> not required; the .NET
            mechanism of associating a
            <see cref="T:System.ComponentModel.TypeConverter"/> with a
            <see cref="T:System.Type"/>  via the use of the
            <see cref="T:System.ComponentModel.TypeConverterAttribute"/> is the
            recommended (and standard) way. This class primarily exists to cover
            those cases where third party classes to which one does not have the
            source need to be exposed to the type conversion mechanism.
            </note>
            <p>
            Because the
            <see cref="T:YCH.Objects.Factory.Config.CustomConverterConfigurer"/>
            class implements the
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            interface, instances of this class that have been exposed in the
            scope of an
            <see cref="T:YCH.Context.IApplicationContext"/> will
            <i>automatically</i> be picked up by the application context and made
            available to the IoC container whenever type conversion is required. If
            one is using a
            <see cref="T:YCH.Objects.Factory.Config.CustomConverterConfigurer"/>
            object definition within the scope of an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>, no such automatic
            pickup of the
            <see cref="T:YCH.Objects.Factory.Config.CustomConverterConfigurer"/>
            is performed (custom converters will have to be added manually using the
            <see cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)"/>
            method). For <i>most</i> application scenarios, one will get better
            mileage using the <see cref="T:YCH.Context.IApplicationContext"/>
            abstraction.
            </p>
            </remarks>
            <example>
            <p>
            The following examples all assume XML based configuration, and use
            inner object definitions to define the custom
            <see cref="T:System.ComponentModel.TypeConverter"/> objects (nominally to
            avoid polluting the object name space, but also because the
            configuration simply reads better that way).
            </p>
            <code escaped="true">
            <object id="customConverterConfigurer" type="YCH.Objects.Factory.Config.CustomConverterConfigurer, YCH.Core">
              <property name="CustomConverters">
                <dictionary>
                  <entry key="System.Date">
                    <object type="MyNamespace.MyCustomDateEditor"/>
                  </entry>
                  <entry key="MyNamespace.MyObject, MyAssembly">
                    <object id="myConverter" type="MyNamespace.MObjectConverter, MyOtherAssembly">
                      <property name="aProperty" value="..."/>
                    </object>
                  </entry>
                </dictionary>
              </property>
            </object>
            </code>
            <p>
            The following example illustrates a complete (albeit naieve) use case
            for this class, including a custom
            <see cref="T:System.ComponentModel.TypeConverter"/> implementation, said
            converters domain class, and the XML configuration that hooks the
            converter in place and makes it available to a YCH.NET container for
            use during object resolution.
            </p>
            <p>
            The domain class is a simple data-only object that contains the data
            required to send an email message (such as the host and user account
            name). A developer would prefer to use a string of the form
            <c>UserName=administrator,Password=r1l0k1l3y,Host=localhost</c> to
            configure the mail settings and just let the container take care of the
            conversion.
            </p>
            <code language="C#">
            namespace ExampleNamespace
            {
            	public sealed class MailSettings
            	{
            		private string _userName;
            		private string _password;
            		private string _host;
            
            		public string Host
            		{
            			get { return _host; }
            			set { _host = value; }
            		}
            
            	 	public string UserName
            		{
            			get { return _userName; }
            			set { _userName = value; }
            		}
            
            		public string Password
            		{
            			get { return _password; }
            			set { _password = value; }
            		}
            	}
            
            	public sealed class MailSettingsConverter : TypeConverter
            	{
            		public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
            	 	{
            			if (typeof (string) == sourceType)
            			{
            				return true;
            			}
            			return base.CanConvertFrom(context, sourceType);
            		}
            
            		public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            		{
            			string text = value as string;
            			if(text != null) 
            			{
            				MailSettings mailSettings = new MailSettings();
            				string[] tokens = text.Split(',');
            				for (int i = 0; i &lt; tokens.Length; ++i)
            				{
            					string token = tokens[i];
            					string[] settings = token.Split('=');
            					typeof(MailSettings).GetProperty(settings[0])
            						.SetValue(mailSettings, settings[1], null);
            				}
            				return mailSettings;
            			}
            			return base.ConvertFrom(context, culture, value);
            		}
            	}
            	
            	// a very naieve class that uses the MailSettings class...
            	public sealed class ExceptionLogger
            	{
            		private MailSettings _mailSettings;
            		
            		public MailSettings MailSettings {
            		{
            			set { _mailSettings = value; }
            		}
            		
            		public void Log(object value)
            		{
            			Exception ex = value as Exception;
            			if(ex != null) 
            			{
            				// use _mailSettings instance...
            			}
            		}
            	}
            }
            </code>
            <p>
            The attendant XML configuration for the above classes would be...
            </p>
            <code escaped="true">
            <object id="emailingExceptionLogger" type="ExampleNamespace.ExceptionLogger, MyAssembly">
            	<property name="MailSettings" value="UserName=administrator,Password=r1l0k1l3y,Host=localhost"/>
            </object>
            <object id="customConverterConfigurer" type="YCH.Objects.Factory.Config.CustomConverterConfigurer, YCH.Core">
            	<property name="CustomConverters">
            		<dictionary>
            			<entry key="ExampleNamespace.MailSettings, MyAssembly">
            				<object type="ExampleNamespace.MailSettingsConverter, MyAssembly"/>
            			</entry>
            		</dictionary>
            	</property>
            </object>
            </code>
            </example>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: CustomConverterConfigurer.cs,v 1.12 2006/04/09 07:18:47 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            <seealso cref="T:YCH.Context.IApplicationContext"/>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor">
            <summary>
            Allows for custom modification of an application context's object
            definitions, adapting the object property values of the context's
            underlying object factory.
            </summary>
            <remarks>
            <p>
            Application contexts can auto-detect
            <c>IObjectFactoryPostProcessor</c> objects in their object definitions and
            apply them before any other objects get created.
            </p>
            <p>
            Useful for custom config files targeted at system administrators that
            override object properties configured in the application context.
            </p>
            <p>
            See PropertyResourceConfigurer and its concrete implementations for
            out-of-the-box solutions that address such configuration needs.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.Net)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor.PostProcessObjectFactory(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory)">
            <summary>
            Modify the application context's internal object factory after its
            standard initialization.
            </summary>
            <remarks>
            <p>
            All object definitions will have been loaded, but no objects will have
            been instantiated yet. This allows for overriding or adding properties
            even to eager-initializing objects.
            </p>
            </remarks>
            <param name="factory">
            The object factory used by the application context.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.CustomConverterConfigurer.PostProcessObjectFactory(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory)">
            <summary>
            Registers any custom converters with the supplied
            <paramref name="factory"/>.
            </summary>
            <param name="factory">
            The object factory to register the converters with.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.CustomConverterConfigurer.ResolveConverter(System.Object)">
            <summary>
            Resolves the supplied <paramref name="value"/> into a
            <see cref="T:System.ComponentModel.TypeConverter"/> instance.
            </summary>
            <param name="value">
            The object that is to be resolved into a
            <see cref="T:System.ComponentModel.TypeConverter"/> instance.
            </param>
            <returns>
            A resolved <see cref="T:System.ComponentModel.TypeConverter"/> instance.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the supplied <paramref name="value"/> is <see langword="null"/>,
            or the supplied <paramref name="value"/> cannot be resolved.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.CustomConverterConfigurer.ResolveRequiredType(System.Object)">
            <summary>
            Resolves the supplied <paramref name="value"/> into a
            <see cref="T:System.Type"/> instance.
            </summary>
            <remarks>
            <p>
            This (default) implementation supports resolving
            <see cref="T:System.String"/>s and <see cref="T:System.Type"/>s.
            Only override this method if you want to key your custom
            converters on something other than <see cref="T:System.String"/>s
            and <see cref="T:System.Type"/>s.
            </p>
            </remarks>
            <param name="value">
            The object that is to be resolved into a <see cref="T:System.Type"/>
            instance.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/>.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the supplied <paramref name="value"/> is <see langword="null"/>,
            or the supplied <paramref name="value"/> cannot be resolved.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.CustomConverterConfigurer.Order">
            <summary>
            Return the order value of this object, with a higher value meaning
            greater in terms of sorting.
            </summary>
            <returns>The order value.</returns>
            <seealso cref="P:YCH.Core.IOrdered.Order"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.CustomConverterConfigurer.CustomConverters">
            <summary>
            The custom converters to register.
            </summary>
            <remarks>
            <p>
            The <see cref="T:System.Collections.IDictionary"/> uses the type name
            of the class that requires conversion as the key, and an
            <b>instance</b> of the
            <see cref="T:System.ComponentModel.TypeConverter"/> that will effect
            the conversion. Alternatively, the actual
            <see cref="T:System.Type"/> of the class that requires conversion
            can be used as the key.
            </p>
            </remarks>
            <example>
            <p>
            <code language="C#">
            IDictionary converters = new Hashtable();
            converters.Add( "System.Date", new MyCustomDateConverter() );
            // a System.Type instance can also be used as the key...
            converters.Add( typeof(Color), new MyCustomRBGColorConverter() );
            </code>
            </p>
            </example>
        </member>
        <member name="T:YCH.Objects.Factory.Config.DelegateFactoryObject">
            <summary>
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation that
            creates delegates.
            </summary>
            <remarks>
            <p>
            Supports the creation of <see cref="T:System.Delegate"/>s for both
            instance and <see langword="static"/> methods.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: DelegateFactoryObject.cs,v 1.5 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.DelegateFactoryObject.AfterPropertiesSet">
            <summary>
            Callback method called once all factory properties have been set.
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/> 
        </member>
        <member name="M:YCH.Objects.Factory.Config.DelegateFactoryObject.CreateInstance">
            <summary>
            Creates the delegate.
            </summary>
            <exception cref="T:System.Exception">
            If an exception occured during object creation.
            </exception>
            <returns>The object returned by this factory.</returns>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.CreateInstance"/> 
        </member>
        <member name="P:YCH.Objects.Factory.Config.DelegateFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of <see cref="T:System.Delegate"/>
            created by this factory.
            </summary>
            <remarks>
            <p>
            Returns the <see cref="T:System.Delegate"/> <see cref="T:System.Type"/>
            if accessed prior to the <see cref="M:YCH.Objects.Factory.Config.DelegateFactoryObject.AfterPropertiesSet"/> method
            being called.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DelegateFactoryObject.DelegateType">
            <summary>
            The <see cref="T:System.Type"/> of the <see cref="T:System.Delegate"/>
            created by this factory.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DelegateFactoryObject.MethodName">
            <summary>
            The name of the method that is to be invoked by the created
            delegate.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DelegateFactoryObject.TargetType">
            <summary>
            The target <see cref="T:System.Type"/> if the <see cref="P:YCH.Objects.Factory.Config.DelegateFactoryObject.MethodName"/>
            refers to a <see langword="static"/> method.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DelegateFactoryObject.TargetObject">
            <summary>
            The target object if the <see cref="P:YCH.Objects.Factory.Config.DelegateFactoryObject.MethodName"/>
            refers to an instance method.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.DictionaryFactoryObject">
            <summary>
            Simple factory for shared <see cref="T:System.Collections.IDictionary"/> instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: DictionaryFactoryObject.cs,v 1.5 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.DictionaryFactoryObject.CreateInstance">
            <summary>
            Constructs a new instance of the target dictionary.
            </summary>
            <returns>The new <see cref="T:System.Collections.IDictionary"/> instance.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DictionaryFactoryObject.SourceDictionary">
            <summary>
            Set the source <see cref="T:System.Collections.IDictionary"/>.
            </summary>
            <remarks>
            <p>
            This value will be used to populate the <see cref="T:System.Collections.IDictionary"/>
            returned by this factory.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DictionaryFactoryObject.TargetDictionaryType">
            <summary>
            Set the <see cref="T:System.Type"/> of the <see cref="T:System.Collections.IDictionary"/>
            implementation to use.
            </summary>
            <remarks>
            <p>
            The default is the <see cref="T:System.Collections.Hashtable"/> <see cref="T:System.Type"/>.
            </p>
            </remarks>
            <exception cref="T:System.ArgumentNullException">
            If the <c>value</c> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the <c>value</c> is an <see langword="abstract"/> <see cref="T:System.Type"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the <c>value</c> is an interface.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.DictionaryFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of objects created by this factory.
            </summary>
            <value>
            Always returns the <see cref="T:System.Collections.IDictionary"/> <see cref="T:System.Type"/>.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Config.EnvironmentVariableMode">
            <summary>
            Specifies how instances of the
            <see cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            class must apply environment variables when replacing values.
            </summary>
            <author>Mark Pollack</author>
            <version>$Id: EnvironmentVariableMode.cs,v 1.5 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Config.EnvironmentVariableMode.Never">
            <summary>
            Never replace environment variables.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.EnvironmentVariableMode.Fallback">
            <summary>
            If properties are not specified via a resource, 
            then resolve using environment variables.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.EnvironmentVariableMode.Override">
            <summary>
            Apply environment variables first before applying properties from a
            resource.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.EventValues">
            <summary>
            Holder for event handler values for an object.
            </summary>
            <author>Rick Evans (.NET)</author>
            <version>$Id: EventValues.cs,v 1.7 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Config.EventValues.EmptyHandlers">
            <summary>
            The empty array of <see cref="T:YCH.Objects.IEventHandlerValue"/>s.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.EventValues.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.EventValues"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.EventValues.#ctor(YCH.Objects.Factory.Config.EventValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.EventValues"/> class.
            </summary>
            <param name="other">
            The <see cref="T:YCH.Objects.Factory.Config.EventValues"/>
            to be used to populate this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.EventValues.AddAll(YCH.Objects.Factory.Config.EventValues)">
            <summary>
            Copy all given argument values into this object.
            </summary>
            <param name="other">
            The <see cref="T:YCH.Objects.Factory.Config.EventValues"/>
            to be used to populate this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.EventValues.AddHandler(YCH.Objects.IEventHandlerValue)">
            <summary>
            Adds the supplied handler to the collection of event handlers.
            </summary>
            <param name="handler">The handler to be added.</param>
        </member>
        <member name="P:YCH.Objects.Factory.Config.EventValues.EventHandlers">
            <summary>
            The mapping of event names to an
            <see cref="T:System.Collections.ICollection"/> of
            <see cref="T:YCH.Objects.IEventHandlerValue"/>s.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.EventValues.Events">
            <summary>
            Gets the <see cref="T:System.Collections.ICollection"/> of events
            that have handlers associated with them.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.EventValues.Item(System.String)">
            <summary>
            Gets the <see cref="T:System.Collections.ICollection"/> of
            <see cref="T:YCH.Objects.IEventHandlerValue"/>s for the supplied
            event name.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject">
            <summary>
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation that
            retrieves a static or non-static <b>public</b> field value.
            </summary>
            <remarks>
            <p>
            Typically used for retrieving <b>public</b> constants.
            </p>
            </remarks>
            <example>
            <p>
            The following example retrieves the <see cref="F:System.DBNull.Value"/> field value...
            </p>
            <code escaped="true">
            <object id="dbnull" type="YCH.Objects.Factory.Config.FieldRetrievingFactoryObject, YCH.Core">
                <property name="TargetType" value="System.DBNull"/>
                <property name="TargetField" value="Value"/>
            </object>
            </code>
            <p>
            The previous example could also have been written using the convenience
            <see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.StaticField"/>
            property, like so...
            </p>
            <code escaped="true">
            <object id="dbnull" type="YCH.Objects.Factory.Config.FieldRetrievingFactoryObject, YCH.Core">
                <property name="StaticField" value="System.DBNull.Value"/>
            </object>
            </code>
            <p>
            This class also implements the <see cref="T:YCH.Objects.Factory.IObjectNameAware"/>
            interface
            (<see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.ObjectName"/>).
            If the id (or name) of one's
            <see cref="T:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject"/>
            object definition is set to the <see cref="P:System.Type.AssemblyQualifiedName"/>
            of the <see langword="static"/> field to be retrieved, then the id (or
            name) of one's object definition will be used for the name of the
            <see langword="static"/> field lookup. See below for an example of this
            concise style of definition.
            </p>
            <code escaped="true">
            <!-- returns the value of the DBNull.Value field -->
            <object id="System.DBNull.Value" type="YCH.Objects.Factory.Config.FieldRetrievingFactoryObject, YCH.Core"/>
            
            <!-- returns the value of the Type.Delimiter field -->
            <object id="System.Type.Delimiter" type="YCH.Objects.Factory.Config.FieldRetrievingFactoryObject, YCH.Core"/>
            </code>
            <p>
            The usage for retrieving instance fields is similar. No example is shown
            because public instance fields are <i>generally</i> bad practice; but if
            you have some legacy code that exposes public instance fields, or if you
            just really like coding public instance fields, then you can use this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation to
            retrieve such field values.
            </p>
            </example>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: FieldRetrievingFactoryObject.cs,v 1.5 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IObjectNameAware">
            <summary>
            Interface to be implemented by objects that wish to be aware of their object
            name in an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>.
            </summary>
            <remarks>
            <p>
            Note that most objects will choose to receive references to collaborating
            objects via respective properties.
            </p>
            <p>
            For a list of all object lifecycle methods, see the
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> API documentation.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="P:YCH.Objects.Factory.IObjectNameAware.ObjectName">
            <summary>
            Set the name of the object in the object factory that created this object.
            </summary>
            <value>
            The name of the object in the factory.
            </value>
            <remarks>
            <p>
            Invoked after population of normal object properties but before an init
            callback like <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method or a custom init-method.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all object properties supplied
            (and satisfied <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            and ApplicationContextAware).
            </summary>
            <remarks>
            <p>
            This method allows the object instance to perform initialization only
            possible when all object properties have been set and to throw an
            exception in the event of misconfiguration.
            </p>
            </remarks>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
            <see cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.StaticField">
            <summary>
            The <see cref="P:System.Type.AssemblyQualifiedName"/> of the
            <see langword="static"/> field to be retrieved.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.ObjectName">
            <summary>
            Set the name of the object in the object factory that created this object.
            </summary>
            <value>
            The name of the object in the factory.
            </value>
            <remarks>
            <p>
            In the context of the
            <see cref="T:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject"/>
            class, the
            <see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.ObjectName"/>
            value will be interepreted as the value of the
            <see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.StaticField"/>
            property if no value has been explicitly assigned to the
            <see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.StaticField"/>
            property. This allows for concise object definitions with just an id or name;
            see the class documentation for
            <see cref="T:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject"/>
            for an example of this style of usage.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.TargetField">
            <summary>
            The name of the field the value of which is to be retrieved.
            </summary>
            <remarks>
            <p>
            If the
            <see cref="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.TargetObject"/>
            has been set (and is not <cref lang="null"/>), then the value of this property
            refers to an instance field name; it otherwise refers to a <see langword="static"/>
            field name.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.TargetObject">
            <summary>
            The object instance on which the field is defined.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.TargetType">
            <summary>
            The <see cref="T:System.Type"/> on which the field is defined.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <cref lang="null"/> if not known in advance.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.FieldRetrievingFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IAutowireCapableObjectFactory">
            <summary>
            Extension of the <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            interface to be implemented by object factories that are capable of
            autowiring and expose this functionality for existing object instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IAutowireCapableObjectFactory.Autowire(System.Type,YCH.Objects.Factory.Config.AutoWiringMode,System.Boolean)">
            <summary>
            Create a new object instance of the given class with the specified
            autowire strategy.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="autowireMode">
            The desired autowiring mode.
            </param>
            <param name="dependencyCheck">
            Whether to perform a dependency check for objects (not applicable to
            autowiring a constructor, thus ignored there).
            </param>
            <returns>The new object instance.</returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the wiring fails.
            </exception>
            <seealso cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IAutowireCapableObjectFactory.AutowireObjectProperties(System.Object,YCH.Objects.Factory.Config.AutoWiringMode,System.Boolean)">
            <summary>
            Autowire the object properties of the given object instance by name or
            <see cref="T:System.Type"/>.
            </summary>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="autowireMode">
            The desired autowiring mode.
            </param>
            <param name="dependencyCheck">
            Whether to perform a dependency check for the object.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the wiring fails.
            </exception>
            <seealso cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IAutowireCapableObjectFactory.ApplyObjectPostProcessorsBeforeInitialization(System.Object,System.String)">
            <summary>
            Apply <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            to the given existing object instance, invoking their
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
            methods.
            </summary>
            <remarks>
            <p>
            The returned object instance may be a wrapper around the original.
            </p>
            </remarks>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any post-processing failed.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IAutowireCapableObjectFactory.ApplyObjectPostProcessorsAfterInitialization(System.Object,System.String)">
            <summary>
            Apply <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            to the given existing object instance, invoking their
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
            methods.
            </summary>
            <remarks>
            <p>
            The returned object instance may be a wrapper around the original.
            </p>
            </remarks>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any post-processing failed.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory">
            <summary>
            SPI interface to be implemented by most if not all listable object factories.
            </summary>
            <remarks>
            <p>
            Allows for framework-internal plug'n'play, e.g. in
            <see cref="T:YCH.Context.Support.AbstractApplicationContext"/>.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IConfigurableObjectFactory">
            <summary>
            Configuration interface to be implemented by most if not all object
            factories.
            </summary>
            <remarks>
            <p>
            Provides the means to configure an object factory in addition to the
            object factory client methods in the
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> interface.
            </p>
            <p>
            Allows for framework-internal plug'n'play even when needing access to object
            factory configuration methods.
            </p>
            <p>
            When disposed, it will destroy all cached singletons in this factory. Call
            <see cref="M:System.IDisposable.Dispose"/> when you want to shutdown
            the factory.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IConfigurableObjectFactory.cs,v 1.13 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.IgnoreDependencyType(System.Type)">
            <summary>
            Ignore the given dependency type for autowiring.
            </summary>
            <remarks>
            <p>
            To be invoked during factory configuration.
            </p>
            <p>
            This will typically be used for dependencies that are resolved
            in other ways, like <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            through <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to be ignored.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.AddObjectPostProcessor(YCH.Objects.Factory.Config.IObjectPostProcessor)">
            <summary>
            Add a new <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            that will get applied to objects created by this factory.
            </summary>
            <remarks>
            <p>
            To be invoked during factory configuration.
            </p>
            </remarks>
            <param name="processor">
            The <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            to register.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterAlias(System.String,System.String)">
            <summary>
            Given an object name, create an alias.
            </summary>
            <remarks>
            <p>
            This is typically used to support names that are illegal within
            XML ids (which are used for object names).
            </p>
            <p>
            Typically invoked during factory configuration, but can also be
            used for runtime registration of aliases. Therefore, a factory
            implementation should synchronize alias access.
            </p>
            </remarks>
            <param name="name">The name of the object.
            </param>
            <param name="theAlias">
            The alias that will behave the same as the object name.
            </param>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the alias is already in use.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterSingleton(System.String,System.Object)">
            <summary>
            Register the given existing object as singleton in the object factory,
            under the given object name.
            </summary>
            <remarks>
            <p>
            Typically invoked during factory configuration, but can also be
            used for runtime registration of singletons. Therefore, a factory
            implementation should synchronize singleton access; it will have
            to do this anyway if it supports lazy initialization of singletons.
            </p>
            </remarks>
            <param name="name">
            The name of the object.
            </param>
            <param name="singleton">The existing object.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the singleton could not be registered.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)">
            <summary>
            Register the given custom <see cref="T:System.ComponentModel.TypeConverter"/>
            for all properties of the given <see cref="T:System.Type"/>.
            </summary>
            <remarks>
            <p>
            To be invoked during factory configuration.
            </p>
            </remarks>
            <param name="requiredType">
            The required <see cref="T:System.Type"/> of the property.
            </param>
            <param name="converter">
            The <see cref="T:System.ComponentModel.TypeConverter"/> to register.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ContainsSingleton(System.String)">
            <summary>
            Does this object factory contains a singleton instance with the
            supplied <paramref name="name"/>?
            </summary>
            <remarks>
            <p>
            Only checks already instantiated singletons; does not return
            <see langword="true"/> for singleton object definitions that have
            not been instantiated yet.
            </p>
            <p>
            The main purpose of this method is to check manually registered
            singletons (<see cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterSingleton(System.String,System.Object)"/>). This
            method can also be used to check whether a singleton defined by an
            object definition has already been created.
            </p>
            <p>
            To check whether an object factory contains an object definition
            with a given name, use the
            <see cref="M:YCH.Objects.Factory.IListableObjectFactory.ContainsObjectDefinition(System.String)"/>
            method. Calling both
            <see cref="M:YCH.Objects.Factory.IListableObjectFactory.ContainsObjectDefinition(System.String)"/>
            and <see cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ContainsSingleton(System.String)"/> definitively answers
            the question of whether a specific object factory contains a
            singleton object with the given name.
            </p>
            <p>
            Use the
            <see cref="M:YCH.Objects.Factory.IObjectFactory.ContainsObject(System.String)"/>
            method for general checks as to whether a factory knows about an
            object with a given name (regrdless of whether the object in
            question is a manually registed singleton instance or created by
            an object definition)... this also has the happy bonus of also
            checking any ancestor factories.
            </p>
            </remarks>
            <param name="name">
            The name of the (singleton) object to look for.
            </param>
            <returns>
            <see langword="true"/> if this object factory contains a singleton
            instance with the given <paramref name="name"/>.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ContainsObject(System.String)"/>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.ContainsObjectDefinition(System.String)"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ParentObjectFactory">
            <summary>
            Set the parent of this object factory.
            </summary>
            <remarks>
            <p>
            Note that the parent shouldn't be changed: it should only be set outside
            a constructor if it isn't available when an object of this class is
            created.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ObjectPostProcessorCount">
            <summary>
            Returns the current number of registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </summary>
            <value>
            The current number of registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </value>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory.PreInstantiateSingletons">
            <summary>
            Ensure that all non-lazy-init singletons are instantiated, also
            considering <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <remarks>
            <p>
            Typically invoked at the end of factory setup, if desired.
            </p>
            <p>
            As this is a startup method, it should destroy already created singletons if
            it fails, to avoid dangling resources. In other words, after invocation
            of that method, either all or no singletons at all should be
            instantiated.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">
            If one of the singleton objects could not be created.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition">
            <summary>
            Describes a configurable object instance, which has property values,
            constructor argument values, and further information supplied by concrete
            implementations.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: IConfigurableObjectDefinition.cs,v 1.9 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IObjectDefinition">
            <summary>
            Describes an object instance, which has property values, constructor
            argument values, and further information supplied by concrete implementations.
            </summary>
            <remarks>
            <p>
            This is just a minimal interface: the main intention is to allow
            <see cref="T:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor"/>
            (like PropertyPlaceholderConfigurer) to access and modify property values.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IObjectDefinition.cs,v 1.11 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.PropertyValues">
            <summary>
            Return the property values to be applied to a new instance of the object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.ConstructorArgumentValues">
            <summary>
            Return the constructor argument values for this object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.MethodOverrides">
            <summary>
            The method overrides (if any) for this object.
            </summary>
            <value>
            The method overrides (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.EventHandlerValues">
            <summary>
            Return the event handlers for any events exposed by this object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.ResourceDescription">
            <summary>
            Return a description of the resource that this object definition
            came from (for the purpose of showing context in case of errors).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.IsAbstract">
            <summary>
            Is this object definition "abstract", i.e. not meant to be instantiated
            itself but rather just serving as parent for concrete child object
            definitions.
            </summary>
            <value>
            <see langword="true"/> if this object definition is "abstract".
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.IsSingleton">
            <summary>
            Return whether this a <b>Singleton</b>, with a single, shared instance
            returned on all calls.
            </summary>
            <remarks>
            <p>
            If <see langword="false"/>, an object factory will apply the <b>Prototype</b>
            design pattern, with each caller requesting an instance getting an
            independent instance. How this is defined will depend on the
            object factory implementation. <b>Singletons</b> are the commoner type.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.IsLazyInit">
            <summary>
            Is this object lazily initialized?</summary>
            <remarks>
            <p>
            Only applicable to a singleton object.
            </p>
            <p>
            If <see langword="false"/>, it will get instantiated on startup by object factories
            that perform eager initialization of singletons.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.ObjectType">
            <summary>
            Returns the <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
            <value>
            A resolved object <see cref="T:System.Type"/>.
            </value>
            <exception cref="T:System.ApplicationException">
            If the <see cref="T:System.Type"/> of the object definition is not a
            resolved <see cref="T:System.Type"/> or <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.ObjectTypeName">
            <summary>
            Returns the <see cref="P:System.Type.FullName"/> of the
            <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.AutowireMode">
            <summary>
            The autowire mode as specified in the object definition.
            </summary>
            <remarks>
            <p>
            This determines whether any automagical detection and setting of
            object references will happen. Default is
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.No"/>,
            which means there's no autowire.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.DependencyCheck">
            <summary>
            The dependency check code.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.DependsOn">
            <summary>
            The object names that this object depends on.
            </summary>
            <remarks>
            <p>
            The object factory will guarantee that these objects get initialized
            before.
            </p>
            <p>
            Note that dependencies are normally expressed through object properties
            or constructor arguments. This property should just be necessary for
            other kinds of dependencies like statics (*ugh*) or database
            preparation on startup.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.InitMethodName">
            <summary>
            The name of the initializer method.
            </summary>
            <remarks>
            <p>
            The default is <see langword="null"/>, in which case there is no initializer method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.DestroyMethodName">
            <summary>
            Return the name of the destroy method.
            </summary>
            <remarks>
            <p>
            The default is <see langword="null"/>, in which case there is no destroy method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.FactoryMethodName">
            <summary>
            The name of the factory method to use (if any).
            </summary>
            <remarks>
            <p>
            This method will be invoked with constructor arguments, or with no
            arguments if none are specified. The static method will be invoked on
            the specified <see cref="P:YCH.Objects.Factory.Config.IObjectDefinition.ObjectType"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IObjectDefinition.FactoryObjectName">
            <summary>
            The name of the factory object to use (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.PropertyValues">
            <summary>
            Return the property values to be applied to a new instance of the object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.ConstructorArgumentValues">
            <summary>
            Return the constructor argument values for this object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.MethodOverrides">
            <summary>
            The method overrides (if any) for this object.
            </summary>
            <value>
            The method overrides (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.EventHandlerValues">
            <summary>
            Return the event handlers for any events exposed by this object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.ResourceDescription">
            <summary>
            Return a description of the resource that this object definition
            came from (for the purpose of showing context in case of errors).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.IsAbstract">
            <summary>
            Is this object definition "abstract", i.e. not meant to be instantiated
            itself but rather just serving as parent for concrete child object
            definitions.
            </summary>
            <value>
            <see langword="true"/> if this object definition is "abstract".
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.ObjectType">
            <summary>
            Returns the <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
            <value>
            A resolved object <see cref="T:System.Type"/>.
            </value>
            <exception cref="T:System.ApplicationException">
            If the <see cref="T:System.Type"/> of the object definition is not a
            resolved <see cref="T:System.Type"/> or <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.ObjectTypeName">
            <summary>
            Returns the <see cref="P:System.Type.FullName"/> of the
            <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.IsSingleton">
            <summary>
            Return whether this a <b>Singleton</b>, with a single, shared instance
            returned on all calls.
            </summary>
            <remarks>
            <p>
            If <see langword="false"/>, an object factory will apply the <b>Prototype</b>
            design pattern, with each caller requesting an instance getting an
            independent instance. How this is defined will depend on the
            object factory implementation. <b>Singletons</b> are the commoner type.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.IsLazyInit">
            <summary>
            Is this object lazily initialized?</summary>
            <remarks>
            <p>
            Only applicable to a singleton object.
            </p>
            <p>
            If <see langword="false"/>, it will get instantiated on startup by object factories
            that perform eager initialization of singletons.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.AutowireMode">
            <summary>
            The autowire mode as specified in the object definition.
            </summary>
            <remarks>
            <p>
            This determines whether any automagical detection and setting of
            object references will happen. Default is
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.No"/>,
            which means there's no autowire.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.DependencyCheck">
            <summary>
            The dependency check code.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.DependsOn">
            <summary>
            The object names that this object depends on.
            </summary>
            <remarks>
            <p>
            The object factory will guarantee that these objects get initialized
            before.
            </p>
            <p>
            Note that dependencies are normally expressed through object properties
            or constructor arguments. This property should just be necessary for
            other kinds of dependencies like statics (*ugh*) or database
            preparation on startup.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.InitMethodName">
            <summary>
            The name of the initializer method.
            </summary>
            <remarks>
            <p>
            The default is <see langword="null"/>, in which case there is no initializer method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.DestroyMethodName">
            <summary>
            Return the name of the destroy method.
            </summary>
            <remarks>
            <p>
            The default is <see langword="null"/>, in which case there is no destroy method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.FactoryMethodName">
            <summary>
            The name of the factory method to use (if any).
            </summary>
            <remarks>
            <p>
            This method will be invoked with constructor arguments, or with no
            arguments if none are specified. The static method will be invoked on
            the specified <see cref="P:YCH.Objects.Factory.Config.IObjectDefinition.ObjectType"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.FactoryObjectName">
            <summary>
            The name of the factory object to use (if any).
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IDestructionAwareObjectPostProcessor">
            <summary>
            Subinterface of
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/> that adds
            a before-destruction callback.
            </summary>
            <remarks>
            The typical usage will be to invoke custom destruction callbacks on
            specific object types, matching corresponding initialization callbacks.
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: IDestructionAwareObjectPostProcessor.cs,v 1.4 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IDestructionAwareObjectPostProcessor.PostProcessBeforeDestruction(System.Object,System.String)">
            <summary>
            Apply this
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/> to the
            given new object instance before its destruction. Can invoke custom
            destruction callbacks.
            </summary>
            <param name="instance">The new object instance.</param>
            <param name="name">The name of the object.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor">
            <summary>
            Subinterface of
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            that adds a before-instantiation callback.
            </summary>
            <remarks>
            <p>
            Typical use cases might include being used to suppress the default
            instantiation of specific target objects, perhaps in favour of creating
            proxies with special <c>YCH.Aop.ITargetSource</c>s (pooling targets,
            lazily initializing targets, etc).
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IInstantiationAwareObjectPostProcessor.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor.PostProcessBeforeInstantiation(System.Type,System.String)">
            <summary>
            Apply this
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            <i>before the target object gets instantiated</i>.
            </summary>
            <remarks>
            <p>
            The returned object may be a proxy to use instead of the target
            object, effectively suppressing the default instantiation of the
            target object.
            </p>
            <p>
            If the object is returned by this method is not
            <see langword="null"/>, the object creation process will be
            short-circuited. The returned object will not be processed any
            further; in particular, no further
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            callbacks will be applied to it. This mechanism is mainly intended
            for exposing a proxy instead of an actual target object.
            </p>
            <p>
            This callback will only be applied to object definitions with an
            object class. In particular, it will <b>not</b> be applied to
            objects with a "factory-method" (i.e. objects that are to be
            instantiated via a layer of indirection anyway).
            </p>
            </remarks>
            <param name="objectType">
            The <see cref="T:System.Type"/> of the target object that is to be
            instantiated.
            </param>
            <param name="objectName">
            The name of the target object.
            </param>
            <returns>
            The object to expose instead of a default instance of the target
            object.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of any errors.
            </exception>
            <seealso cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.HasObjectType"/>
            <seealso cref="P:YCH.Objects.Factory.Config.IConfigurableObjectDefinition.FactoryMethodName"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ListFactoryObject">
            <summary>
            Simple factory for shared <see cref="T:System.Collections.IList"/> instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: ListFactoryObject.cs,v 1.6 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ListFactoryObject.CreateInstance">
            <summary>
            Constructs a new instance of the target dictionary.
            </summary>
            <returns>The new <see cref="T:System.Collections.IList"/> instance.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ListFactoryObject.SourceList">
            <summary>
            Set the source <see cref="T:System.Collections.IList"/>.
            </summary>
            <remarks>
            <p>
            This value will be used to populate the <see cref="T:System.Collections.IList"/>
            returned by this factory.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ListFactoryObject.TargetListType">
            <summary>
            Set the <see cref="T:System.Type"/> of the <see cref="T:System.Collections.IList"/>
            implementation to use.
            </summary>
            <remarks>
            <p>
            The default is the <see cref="T:System.Collections.ArrayList"/> <see cref="T:System.Type"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ListFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of objects created by this factory.
            </summary>
            <value>
            Always returns the <see cref="T:System.Collections.IList"/> <see cref="T:System.Type"/>.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Config.Log4NetFactoryObject">
            <summary>
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation that
            creates instances of the <see cref="T:log4net.ILog"/> class.
            </summary>
            <remarks>
            <p>
            Typically used for retrieving shared <see cref="T:log4net.ILog"/>
            instances for common topics (such as the 'DAL', 'BLL', etc). The
            <see cref="P:YCH.Objects.Factory.Config.Log4NetFactoryObject.LogName"/>
            property determines the name of the
            <a href="http://logging.apache.org/log4net/">Log4Net</a> logger.  
            </p>
            </remarks>
            <author>Rick Evans</author>
            <seealso cref="M:log4net.LogManager.GetLogger(System.String)"/>
            <version>$Id: Log4NetFactoryObject.cs,v 1.8 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.Log4NetFactoryObject.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.Log4NetFactoryObject"/>
            class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.Log4NetFactoryObject.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.Log4NetFactoryObject"/>
            class.
            </summary>
            <param name="logName">
            The name of the <see cref="T:log4net.ILog"/> instance served up by
            this factory.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="logName"/> is
            <see langword="null"/> or contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.Log4NetFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <returns>
            An instance (possibly shared or independent) of the object
            managed by this factory.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.Log4NetFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all object properties supplied
            (and satisfied the
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            and <see cref="T:YCH.Context.IApplicationContextAware"/>
            interfaces).
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.Log4NetFactoryObject.LogName">
            <summary>
            The name of the <see cref="T:log4net.ILog"/> instance served up by
            this factory.
            </summary>
            <value>
            The name of the <see cref="T:log4net.ILog"/> instance served up by
            this factory.
            </value>
            <exception cref="T:System.ArgumentNullException">
            If the <see langword="value"/> supplied to the setter is
            <see langword="null"/> or contains only whitespace character(s).
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.Log4NetFactoryObject.ObjectType">
            <summary>
            Return the type of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <cref lang="null"/> if not known in advance.
            </summary>
            <seealso cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.Log4NetFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
            <seealso cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.MethodInvokingFactoryObject">
            <summary>
            An <see cref="T:YCH.Objects.Factory.IFactoryObject"/> that returns a value
            that is the result of a <see langword="static"/> or instance method invocation.
            </summary>
            <remarks>
            <p>
            Note that this class generally is expected to be used for accessing factory methods,
            and as such defaults to operating in singleton mode. The first request to
            <see cref="M:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.GetObject"/>
            by the owning object factory will cause a method invocation, the return
            value of which will be cached for all subsequent requests. The
            <see cref="P:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.IsSingleton"/> property may be set to
            <see langword="false"/>, to cause this factory to invoke the target method each
            time it is asked for an object.
            </p>
            <p>
            A <see langword="static"/> target method may be specified by setting the
            <see cref="P:YCH.Util.MethodInvoker.TargetMethod"/> property to a string representing
            the <see langword="static"/> method name, with <see cref="P:YCH.Util.MethodInvoker.TargetType"/> specifying
            the <see cref="T:System.Type"/> that the <see langword="static"/> method is defined on.
            Alternatively, a target instance method may be specified, by setting the
            <see cref="P:YCH.Util.MethodInvoker.TargetObject"/> property as the target object, and
            the <see cref="P:YCH.Util.MethodInvoker.TargetMethod"/> property as the name of the
            method to call on that target object. Arguments for the method invocation may be
            specified by setting the <see cref="P:YCH.Util.MethodInvoker.Arguments"/> property.
            </p>
            <p>
            Another (esoteric) use case for this factory object is when one needs to call a method
            that doesn't return any value (for example, a <see langword="static"/> class method to
            force some sort of initialization to happen)... this use case is not supported by
            factory-methods, since a return value is needed to become the object.
            </p>
            <p>
            <note>
            This class depends on the
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method being called after all properties have been set, as per the
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/> contract. If you are
            using this class outside of a YCH.NET IoC container, you must call one of either
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/> or
            <see cref="M:YCH.Util.MethodInvoker.Prepare"/> yourself to ready the object's internal
            state, or you will get a nasty <see cref="T:System.NullReferenceException"/>.
            </note>
            </p>
            </remarks>
            <example>
            <p>
            The following example uses an instance of this class to call a <see langword="static"/>
            factory method...
            </p>
            <code escaped="true">
            <object id="myObject" type="YCH.Objects.Factory.Config.MethodInvokingFactoryObject, YCH.Core">
              <property name="TargetType" value="Whatever.MyClassFactory, MyAssembly"/>
              <property name="TargetMethod" value="Instance"/>
              <!-- the ordering of arguments is significant -->
              <property name="Arguments">
            	<list>
            		<value>1st</value>
            		<value>2nd</value>
            		<value>and 3rd arguments</value>
            	</list>
              </property>
            </object>
            </code>
            <p>
            The following example is similar to the preceding example; the only pertinent difference is the fact that
            a number of different objects are passed as arguments, demonstrating that not only simple value types
            are valid as elements of the argument list...
            </p>
            <code language="C#">
            </code>
            <code escaped="true">
            <object id="myObject" type="YCH.Objects.Factory.Config.MethodInvokingFactoryObject, YCH.Core">
              <property name="TargetType" value="Whatever.MyClassFactory, MyAssembly"/>
              <property name="TargetMethod" value="Instance"/>
              <!-- the ordering of arguments is significant -->
              <property name="Arguments">
            	<list>
            		<!-- a primitive type (a string) -->
            		<value>1st</value>
            		<!-- an inner object definition is passed as the second argument -->
            		<object type="Whatever.SomeClass, MyAssembly"/>
            		<!-- a reference to another objects is passed as the third argument -->
            		<ref object="someOtherObject"/>
            		<!-- another list is passed as the fourth argument -->
            		<list>
            			<value>http://www.springframework.net/</value>
            		</list>
            	</list>
              </property>
            </object>
            </code>
            <p>
            Named parameters are also supported... this next example yields the same results as
            the preceding example (that did not use named arguments).
            </p>
            <code escaped="true">
            <object id="myObject" type="YCH.Objects.Factory.Config.MethodInvokingFactoryObject, YCH.Core">
              <property name="TargetObject">
                <object type="Whatever.MyClassFactory, MyAssembly"/>
              </property>
              <property name="TargetMethod" value="Execute"/>
              <!-- the ordering of named arguments is not significant -->
              <property name="NamedArguments">
            	<dictionary>
            		<entry key="argumentName"><value>1st</value></entry>
            		<entry key="finalArgumentName"><value>and 3rd arguments</value></entry>
            		<entry key="anotherArgumentName"><value>2nd</value></entry>
            	</dictionary>
              </property>
            </object>
            </code>
            <p>
            Similarly, the following example uses an instance of this class to call an instance method...
            </p>
            <code escaped="true">
            <object id="myMethodObject" type="Whatever.MyClassFactory, MyAssembly"/>
            <object id="myObject" type="YCH.Objects.Factory.Config.MethodInvokingFactoryObject, YCH.Core">
              <property name="TargetObject">
                <ref local="myMethodObject"/>
              </property>
              <property name="TargetMethod" value="Execute"/>
            </object>
            </code>
            <p>
            The above example could also have been written using an anonymous inner object definition... if the
            object on which the method is to be invoked is not going to be used outside of the factory object
            definition, then this is the preferred idiom because it limits the scope of the object on which the
            method is to be invoked to the surrounding factory object.
            </p>
            <code escaped="true">
            <object id="myObject" type="YCH.Objects.Factory.Config.MethodInvokingFactoryObject, YCH.Core">
              <property name="TargetObject">
                <object type="Whatever.MyClassFactory, MyAssembly"/>
              </property>
              <property name="TargetMethod" value="Execute"/>
            </object>
            </code>
            </example>
            <author>Colin Sampaleanu</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <author>Simon White (.NET)</author>
            <version>$Id: MethodInvokingFactoryObject.cs,v 1.13 2005/10/31 18:38:28 springboy Exp $</version>
            <seealso cref="T:YCH.Util.MethodInvoker"/>
            <seealso cref="T:YCH.Objects.Support.ArgumentConvertingMethodInvoker"/>
        </member>
        <member name="T:YCH.Objects.Support.ArgumentConvertingMethodInvoker">
            <summary>
            Specialisation of the <see cref="T:YCH.Util.MethodInvoker"/> class that tries
            to convert the given arguments for the actual target method via an
            appropriate <see cref="T:YCH.Objects.IObjectWrapper"/> implementation.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans</author>
            <version>$Id: ArgumentConvertingMethodInvoker.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
            <seealso cref="T:YCH.Util.MethodInvoker"/>
        </member>
        <member name="T:YCH.Util.MethodInvoker">
            <summary>
            Helper class allowing one to declaratively specify a method call for later invocation.
            </summary>
            <remarks>
            <p>
            Typically not used directly but via its subclasses such as
            <see cref="T:YCH.Objects.Factory.Config.MethodInvokingFactoryObject"/>.
            </p>
            <p>
            Usage: specify either the <see cref="P:YCH.Util.MethodInvoker.TargetType"/> and 
            <see cref="P:YCH.Util.MethodInvoker.TargetMethod"/> or the
            <see cref="P:YCH.Util.MethodInvoker.TargetObject"/> and
            <see cref="P:YCH.Util.MethodInvoker.TargetMethod"/> properties respectively, and
            (optionally) any arguments to the method. Then call the
            <see cref="M:YCH.Util.MethodInvoker.Prepare"/> method to prepare the invoker.
            Once prepared, the invoker can be invoked any number of times.
            </p>
            </remarks>
            <example>
            <p>
            The following example uses the <see cref="T:YCH.Util.MethodInvoker"/> class to invoke the
            <c>ToString()</c> method on the <c>Foo</c> class using a mixture of both named and unnamed
            arguments.
            </p>
            <code language="C#">
            public class Foo 
            {
                public string ToString(string name, int age, string address)
                {
            		return string.Format("{0}, {1} years old, {2}", name, age, address);
                }
                
                public static void Main()
                {
            		Foo foo = new Foo();
            		MethodInvoker invoker = new MethodInvoker();
            		invoker.Arguments = new object [] {"Kaneda", "18 Kaosu Gardens, Nakatani Drive, Okinanawa"};
            		invoker.AddNamedArgument("age", 29);
            		invoker.Prepare();
            		// at this point, the arguments that will be passed to the method invocation
            		// will have been resolved into the following ordered array : {"Kaneda", 29, "18 Kaosu Gardens, Nakatani Drive, Okinanawa"}
            		string details = (string) invoker.Invoke();
            		Console.WriteLine (details);
            		// will print out 'Kaneda, 29 years old, 18 Kaosu Gardens, Nakatani Drive, Okinanawa'
                }
            }
            </code>
            </example>
            <author>Colin Sampaleanu</author>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: MethodInvoker.cs,v 1.15 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Util.MethodInvoker.MethodSearchingFlags">
            <summary>
            The <see cref="T:System.Reflection.BindingFlags"/> used to search for
            the method to be invoked.
            </summary>
        </member>
        <member name="F:YCH.Util.MethodInvoker.Void">
            <summary>
            The value returned from the invocation of a method that returns void.
            </summary>
        </member>
        <member name="F:YCH.Util.MethodInvoker._methodObject">
            <summary>
            The method that will be invoked.
            </summary>
        </member>
        <member name="M:YCH.Util.MethodInvoker.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.MethodInvoker"/> class.
            </summary>
        </member>
        <member name="M:YCH.Util.MethodInvoker.SetStaticMethod(System.String)">
            <summary>
            Set the fully qualified <see langword="static"/> method name to invoke.
            </summary>
            <remarks>
            <p>
            Convenient alternative to specifying
            <see cref="P:YCH.Util.MethodInvoker.TargetType"/> and
            <see cref="P:YCH.Util.MethodInvoker.TargetMethod"/>.
            </p>
            </remarks>
            <example>
            <p><c>Example.MyExampleType.MyExampleMethod, MyAssembly</c></p>
            </example>
            <param name="staticMethod">
            The fully qualified <see langword="static"/> method name to invoke.
            </param>
            <exception cref="T:System.ArgumentException">
            If the method name is not fully qualified.
            </exception>
        </member>
        <member name="M:YCH.Util.MethodInvoker.Prepare">
            <summary>
            Prepare the specified method.
            </summary>
            <remarks>
            <p>
            The method can be invoked any number of times afterwards.
            </p>
            </remarks>
            <exception cref="T:System.ArgumentException">
            If all required properties are not set, or a matching argument could not be found
            for a named argument (typically down to a typo).
            </exception>
            <exception cref="T:System.MissingMethodException">
            If the specified method could not be found.
            </exception>
        </member>
        <member name="M:YCH.Util.MethodInvoker.FindTheMethodToInvoke">
            <summary>
            Searches for and returns the method that is to be invoked.
            </summary>
            <remarks>
            The return value of this method call will subsequently be returned from the
            <see cref="M:YCH.Util.MethodInvoker.GetPreparedMethod"/>.
            </remarks>
            <returns>The method that is to be invoked.</returns>
            <exception cref="T:System.MissingMethodException">
            If no method could be found.
            </exception>
            <exception cref="T:System.ArgumentException">
            If more than one method was found.
            </exception>
        </member>
        <member name="M:YCH.Util.MethodInvoker.AddNamedArgument(System.String,System.Object)">
            <summary>
            Adds the named argument to this instances mapping of argument names to argument values.
            </summary>
            <param name="argumentName">
            The name of an argument on the method that is to be invoked.
            </param>
            <param name="argument">
            The value of the named argument on the method that is to be invoked.
            </param>
        </member>
        <member name="M:YCH.Util.MethodInvoker.GetPreparedMethod">
            <summary>
            Returns the prepared <see cref="T:System.Reflection.MethodInfo"/> object that
            will be invoked.
            </summary>
            <remarks>
            <p>
            A possible use case is to determine the return <see cref="T:System.Type"/> of the method.
            </p>
            </remarks>
            <returns>
            The prepared <see cref="T:System.Reflection.MethodInfo"/> object that
            will be invoked.
            </returns>
        </member>
        <member name="M:YCH.Util.MethodInvoker.Invoke">
            <summary>
            Invoke the specified method.
            </summary>
            <remarks>
            <p>
            The invoker needs to have been prepared beforehand (via a call to the
            <see cref="M:YCH.Util.MethodInvoker.Prepare"/> method).
            </p>
            </remarks>
            <returns>
            The object returned by the method invocation, or
            <see cref="F:YCH.Util.MethodInvoker.Void"/> if the method returns void.
            </returns>
            <exception cref="T:YCH.Objects.MethodInvocationException">
            If at least one of the arguments passed to this <see cref="T:YCH.Util.MethodInvoker"/>
            was incompatible with the signature of the invoked method.
            </exception>
        </member>
        <member name="P:YCH.Util.MethodInvoker.TargetType">
            <summary>
            The target <see cref="T:System.Type"/> on which to call the target method.
            </summary>
            <remarks>
            <p>
            Only necessary when the target method is <see langword="static"/>;
            else, a target object needs to be specified.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Util.MethodInvoker.TargetObject">
            <summary>
            The target object on which to call the target method.
            </summary>
            <remarks>
            <p>
            Only necessary when the target method is not <see langword="static"/>;
            else, a target class is sufficient.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Util.MethodInvoker.TargetMethod">
            <summary>
            The name of the method to be invoked.
            </summary>
            <remarks>
            <p>
            Refers to either a <see langword="static"/> method
            or a non-<see langword="static"/> method, depending on
            whether or not a target object has been set.
            </p>
            </remarks>
            <seealso cref="P:YCH.Util.MethodInvoker.TargetObject"/>
        </member>
        <member name="P:YCH.Util.MethodInvoker.Arguments">
            <summary>
            Arguments for the method invocation.
            </summary>
            <remarks>
            <p>
            Ordering <b>is</b> significant... the order of the arguments in this
            property must match the ordering of the various parameters on the target
            method. There does however exist a small possibility for confusion when
            the arguments in this property are supplied in addition to one or more named
            arguments. In this case, each named argument is slotted into the index position
            corresponding to the named argument... once once all named arguments have been
            resolved, the arguments in this property are slotted into any remaining (empty)
            slots in the method parameter list (see the example in the overview of the
            <see cref="T:YCH.Util.MethodInvoker"/> class if this is not clear).
            </p>
            <p>
            If this property is not set, or the value passed to the setter invocation
            is <see langword="null"/> or a zero-length array, a method with no (un-named) arguments is assumed.
            </p>
            </remarks>
            <seealso cref="P:YCH.Util.MethodInvoker.NamedArguments"/>
        </member>
        <member name="P:YCH.Util.MethodInvoker.PreparedArguments">
            <summary>
            The resolved arguments for the method invocation.
            </summary>
            <remarks>
            <note type="caution">
            This property is not set until the target method has been resolved via a call to the
            <see cref="M:YCH.Util.MethodInvoker.Prepare"/> method). It is a combination of the
            named and plain vanilla arguments properties, and it is this object array that
            will actually be passed to the invocation of the target method.
            </note>
            <p>
            Setting the value of this property to <see langword="null"/> results in basically clearing out any
            previously prepared arguments... another call to the <see cref="M:YCH.Util.MethodInvoker.Prepare"/>
            method will then be required to prepare the arguments again (or the prepared arguments
            can be set explicitly if so desired).
            </p>
            </remarks>
            <seealso cref="P:YCH.Util.MethodInvoker.Arguments"/>
            <seealso cref="P:YCH.Util.MethodInvoker.NamedArguments"/>
        </member>
        <member name="P:YCH.Util.MethodInvoker.NamedArguments">
            <summary>
            Named arguments for the method invocation.
            </summary>
            <remarks>
            <p>
            The keys of this dictionary are the (<see cref="T:System.String"/>) names of the
            method arguments, and the (<see cref="T:System.Object"/>) values are the actual
            argument values themselves.
            </p>
            <p>
            If this property is not set, or the value passed to the setter invocation
            is a <see langword="null"/> reference, a method with no named arguments is assumed.
            </p>
            </remarks>
            <seealso cref="P:YCH.Util.MethodInvoker.Arguments"/>
        </member>
        <member name="M:YCH.Objects.Support.ArgumentConvertingMethodInvoker.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.ArgumentConvertingMethodInvoker"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.ArgumentConvertingMethodInvoker.Prepare">
            <summary>
            Prepare the specified method.
            </summary>
            <remarks>
            <p>
            The method can be invoked any number of times afterwards.
            </p>
            </remarks>
            <exception cref="T:System.ArgumentException">
            If all required properties are not set.
            </exception>
            <exception cref="T:System.MissingMethodException">
            If the specified method could not be found.
            </exception>
        </member>
        <member name="M:YCH.Objects.Support.ArgumentConvertingMethodInvoker.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)">
            <summary>
            Register the given custom <see cref="T:System.ComponentModel.TypeConverter"/>
            for all properties of the given <see cref="T:System.Type"/>.
            </summary>
            <param name="requiredType">
            The <see cref="T:System.Type"/> of property.
            </param>
            <param name="typeConverter">
            The <see cref="T:System.ComponentModel.TypeConverter"/> to register.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <remarks>
            <p>
            Returns the return value of the method that is to be invoked.
            </p>
            <p>
            Will return the same value each time if the
            <see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
            property value is <see langword="true"/>.
            </p>
            </remarks>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.AfterPropertiesSet">
            <summary>
            Prepares this method invoker.
            </summary>
            <exception cref="T:System.ArgumentException">
            If all required properties are not set.
            </exception>
            <exception cref="T:System.MissingMethodException">
            If the specified method could not be found.
            </exception>
            <seealso cref="M:YCH.Objects.Support.ArgumentConvertingMethodInvoker.Prepare"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.IsSingleton">
            <summary>
            If a singleton should be created, or a new object on each request.
            Defaults to <see langword="true"/>.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.MethodInvokingFactoryObject.ObjectType">
            <summary>
            Return the return value <see cref="T:System.Type"/> of the method
            that this factory invokes, or <see langword="null"/> if not
            known in advance.
            </summary>
            <remarks>
            <p>
            If the return value of the method that this factory is to invoke is
            <see langword="void"/>, then the <see cref="T:System.Reflection.Missing"/>
            <see cref="T:System.Type"/> will be returned (in accordance with the
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> contract that
            treats a <see langword="null"/> value as a configuration error).
            </p>
            </remarks>
            <seealso cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject">
            <summary>
            Returns a value that is an
            <see cref="T:YCH.Objects.Factory.IGenericObjectFactory"/> that
            returns an object from an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>.
            </summary>
            <remarks>
            <p>
            The primary motivation of this class is to avoid having a client object
            directly calling the
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            method to get a prototype object out of an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>, which would be a
            violation of the inversion of control principle. With the use of this
            class, the client object can be fed an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> as a property
            that directly returns one target <b>prototype</b> object.
            </p>
            <p>
            The object referred to by the value of the
            <see cref="P:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.TargetObjectName"/>
            property does not have to be a prototype object, but there is little
            to no point in using this class in conjunction with a singleton object.
            </p>
            </remarks>
            <example>
            <p>
            The following XML configuration snippet illustrates the use of this
            class...
            </p>
            <code escaped="true">
            <objects>
              <!-- prototype object since we have state -->
              <object id="MyService" type="A.B.C.MyService" singleton="false"/>
              
              <object id="MyServiceFactory" type="YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject">
                <property name="TargetObjectName"><idref local="MyService"/></property>
              </object>
              
              <object id="MyClientObject" type="A.B.C.MyClientObject">
                <property name="MyServiceFactory" ref="MyServiceFactory"/>
              </object>
            </objects>
            </code>
            </example>
            <author>Colin Sampaleanu</author>
            <author>Simon White (.NET)</author>
            <version>$Id: ObjectFactoryCreatingFactoryObject.cs,v 1.8 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IObjectFactoryAware">
            <summary>
            Interface to be implemented by objects that wish to be aware of their owning
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>.
            </summary>
            <remarks>
            <p>
            For example, objects can look up collaborating objects via the factory.
            </p>
            <p>
            Note that most objects will choose to receive references to collaborating
            objects via respective properties and / or an appropriate constructor.
            </p>
            <p>
            For a list of all object lifecycle methods, see the
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> API documentation.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IObjectFactoryAware.cs,v 1.6 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="P:YCH.Objects.Factory.IObjectFactoryAware.ObjectFactory">
            <summary>
            Callback that supplies the owning factory to an object instance.
            </summary>
            <value>
            Owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            (may not be <see langword="null"/>). The object can immediately
            call methods on the factory.
            </value>
            <remarks>
            <p>
            Invoked after population of normal object properties but before an init
            callback like <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method or a custom init-method.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of initialization errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.CreateInstance">
            <summary>
            Returns an instance of the object factory.
            </summary>
            <returns>The object factory.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all supplied object properties.
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.AfterPropertiesSet"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.TargetObjectName">
            <summary>
            Sets the name of the target object.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.ObjectFactory">
            <summary>
            The target factory that will be used to perform the lookup
            of the object referred to by the <see cref="P:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.TargetObjectName"/>
            property.
            </summary>
            <value>
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            (will never be <see langword="null"/>).
            </value>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of initialization errors.
            </exception>
            <seealso cref="P:YCH.Objects.Factory.IObjectFactoryAware.ObjectFactory"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of object created by this factory.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.IGenericObjectFactory">
            <summary>
            Interface defining a factory which can return an object instance
            (possibly shared or independent) when invoked. 
            </summary>
            <remarks>
            This interface is typically used to encapsulate a generic factory 
            which returns a new instance (prototype) on each invocation.
            It is similar to the <see cref="T:YCH.Objects.Factory.IFactoryObject"/>, but
            implementations of the aforementioned interface are normally meant to be defined
            as instances by the user in an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>,
            while implementations of this class are normally meant to be fed as a property to
            other objects; as such, the
            <see cref="M:YCH.Objects.Factory.IGenericObjectFactory.GetObject"/> method
            has different exception handling behavior.
            </remarks>
            <author>Colin Sampaleanu</author>
            <author>Simon White (.NET)</author>
            <version>$Id: IGenericObjectFactory.cs,v 1.6 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.IGenericObjectFactory.GetObject">
            <summary>
            Return an instance (possibly shared or independent)
            of the object managed by this factory.
            </summary>
            <returns>
            An instance of the object (should never be <see langword="null"/>).
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.GenericObjectFactory.#ctor(YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject)">
            <summary>
            Creates a new instance of the GenericObjectFactory class.
            </summary>
            <param name="enclosing">
            The enclosing
            <see cref="T:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ObjectFactoryCreatingFactoryObject.GenericObjectFactory.GetObject">
            <summary>
            Returns the object created by the enclosed object factory.
            </summary>
            <returns>The created object.</returns>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject">
            <summary>
            An <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation
            that exposes an arbitrary target object under a different name.
            </summary>
            <remarks>
            <p>
            Usually, the target object will reside in a different object
            definition file, using this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> to link it in
            and expose it under a different name. Effectively, this corresponds
            to an alias for the target object.
            </p>
            <note>
            For XML based object definition files, a <code>&lt;alias&gt;</code>
            tag is available that effectively achieves the same.
            </note>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectReferenceFactoryObject.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.IFactoryObject"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject.TargetObjectName">
            <summary>
            The name of the target object.
            </summary>
            <remarks>
            <p>
            The target object may potentially be defined in a different object
            definition file.
            </p>
            </remarks>
            <value>The name of the target object.</value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject.ObjectType">
            <summary>
            Return the type of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <see langword="null"/> if not known in advance.
            </summary>
            <seealso cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
            <seealso cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ObjectReferenceFactoryObject.ObjectFactory">
            <summary>
            Callback that supplies the owning factory to an object instance.
            </summary>
            <value>
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            (may not be <see langword="null"/>). The object can immediately
            call methods on the factory.
            </value>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of initialization errors.
            </exception>
            <seealso cref="P:YCH.Objects.Factory.IObjectFactoryAware.ObjectFactory"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer">
            <summary>
            Overrides default values in one or more object definitions.
            </summary>
            <remarks>
            <p>
            Instances of this class <b>override</b> already existing values, and is
            thus best suited to replacing defaults. If you need to <i>replace</i>
            placeholder values, consider using the
            <seea cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            class instead.
            </p>
            <p>
            In contrast to the
            <see cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            class, the original object definition can have default
            values or no values at all for such object properties. If an overriding
            configuration file does not have an entry for a certain object property,
            the default object value is left as is. Also note that it is not
            immediately obvious to discern which object definitions will be mutated by
            one or more
            <see cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>s
            simply by looking at the object configuration.
            </p>
            <p>
            Each line in a referenced configuration file is expected to take the
            following form...
            </p>
            <code escaped="true">
            	<add key="name.property" value="the override"/>
            </code>
            <p>
            The <c>name.property</c> key refers to the object name and the
            property that is to be overridden; and the value is the overridding
            value that will be inserted into the appropriate object definition's
            named property.
            </p>
            <p>
            Please note that in the case of multiple
            <see cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>s
            that define different values for the same object definition value, the
            <b>last</b> overridden value will win (due to the fact that the values
            supplied by previous
            <see cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>s
            will be overridden).
            </p>
            </remarks>
            <example>
            <p>
            The following XML context definition defines an object that has a number
            of properties, all of which have <b>default</b> values...
            </p>
            <code escaped="true">
            <object id="connStringProvider" type="MyNamespace.OracleConnectionStringProvider, MyAssembly">
            	<property name="dataSource" value="MyOracleDB"/>
            	<property name="userId" value="sa"/>
            	<property name="password" value="g0ly4dk1n"/>
            	<property name="integratedSecurity" value="true"/>
            </object>
            </code>
            <p>
            What follows is a .NET config file snippet for the above example (assuming
            the need to override one of the default values)...
            </p>
            <code escaped="true">
            <name-values>
            	<add key="database.userid" value="test"/>
            	<add key="database.password" value="0bl0m0v"/>
            </name-values>
            </code>
            </example>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: PropertyOverrideConfigurer.cs,v 1.7 2005/07/11 19:09:57 springboy Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyResourceConfigurer"/>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>
        </member>
        <member name="T:YCH.Objects.Factory.Config.PropertyResourceConfigurer">
            <summary>
            Allows for the configuration of individual object property values from
            a .NET .config file.
            </summary>
            <remarks>
            <p>
            Useful for custom .NET .config files targetted at system administrators
            that override object properties configured in the application context.
            </p>
            <p>
            Two concrete implementations are provided in the YCH.NET core library:
            <list type="bullet">
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>
            for <c>&lt;add key="placeholderKey" value="..."/&gt;</c> style
            overriding (pushing values from a .NET .config file into object
            definitions).
            </description>
            </item>
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            for replacing "${...}" placeholders (pulling values from a .NET .config
            file into object definitions).
            </description>
            </item>
            </list>
            </p>
            <p>
            Please refer to the API documentation for the concrete implementations
            listed above for example usage.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            <version>$Id: PropertyResourceConfigurer.cs,v 1.12 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Config.PropertyResourceConfigurer.DefaultConfigSectionName">
            <summary>
            The default configuration section name to use if none is explictly supplied. 
            </summary>
            <seealso cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.ConfigSections"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyResourceConfigurer.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.PropertyResourceConfigurer"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyResourceConfigurer.PostProcessObjectFactory(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory)">
            <summary>
            Modify the application context's internal object factory after its
            standard initialization.
            </summary>
            <param name="factory">
            The object factory used by the application context.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectFactoryPostProcessor.PostProcessObjectFactory(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyResourceConfigurer.ValidateConfigSections(System.String[])">
            <summary>
            Validates the supplied <paramref name="configSections"/>.
            </summary>
            <remarks>
            <p>
            Basically, if external locations are specified, ensure that either
            one or a like number of config sections are also specified.
            </p>
            </remarks>
            <param name="configSections">
            The <paramref name="configSections"/> to be validated.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyResourceConfigurer.InitializeWithDefaultProperties(System.Collections.Specialized.NameValueCollection)">
            <summary>
            Simply initializes the supplied <paramref name="properties"/>
            collection with this instances default <see cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Properties"/>
            (if any).
            </summary>
            <param name="properties">
            The collection to be so initialized.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyResourceConfigurer.ProcessProperties(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory,System.Collections.Specialized.NameValueCollection)">
            <summary>
            Apply the given properties to the supplied
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>.
            </summary>
            <param name="factory">
            The <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>
            used by the application context.
            </param>
            <param name="props">The properties to apply.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If an error occured.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.LastLocationOverrides">
            <summary>
            The policy for resolving conflicting property overrides from
            several resources.
            </summary>
            <remarks>
            <p>
            When merging conflicting property overrides from several resources,
            should append an override with the same key be appended to the
            current value, or should the property override from the last resource
            processed override previous values?
            </p>
            <p>
            The default value is <see langword="true"/>; i.e. a property
            override from the last resource to be processed overrides previous
            values.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if the property override from the last resource
            processed overrides previous values.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Order">
            <summary>
            Return the order value of this object, where a higher value means greater in
            terms of sorting.
            </summary>
            <returns>The order value.</returns>
            <seealso cref="P:YCH.Core.IOrdered.Order"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Properties">
            <summary>
            The default properties to be applied.
            </summary>
            <remarks>
            <p>
            These are to be considered defaults, to be overridden by values
            loaded from other resources.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Location">
            <summary>
            The location of the .NET .config file that contains the property
            overrides that are to be applied.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Locations">
            <summary>
            The locations of the .NET .config files containing the property
            overrides that are to be applied.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.ConfigSections">
            <summary>
            The configuration sections to look for within the .config files.
            </summary>
            <seealso cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Location"/>
            <seealso cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Locations"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.IgnoreResourceNotFound">
            <summary>
            Should a failure to find a .config file be ignored?
            </summary>
            <remarks>
            <p>
            <see langword="true"/> is only appropriate if the .config file is
            completely optional. The default is <see langword="false"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> if a failure to find a .config file is to be
            ignored.
            </value>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyOverrideConfigurer.ProcessProperties(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory,System.Collections.Specialized.NameValueCollection)">
            <summary>
            Apply the given properties to the supplied
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>.
            </summary>
            <param name="factory">
            The <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>
            used by the application context.
            </param>
            <param name="props">The properties to apply.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If an error occured.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyOverrideConfigurer.ProcessKey(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory,System.String,System.String)">
            <summary>
            Process the given key as 'name.property' entry.
            </summary>
            <param name="factory">
            The object factory containing the object definitions that are to be
            processed.
            </param>
            <param name="key">The key.</param>
            <param name="value">The value.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If an error occurs.
            </exception>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the property was not well formed (i.e. not in the format "name.property").
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Config.PropertyPathFactoryObject">
            <summary>
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation that
            evaluates a property path on a given target object.
            </summary>
            <remarks>
            <p>
            The target object can be specified directly or via an object name (see
            example below).
            </p>
            <p>
            Please note that the <see cref="T:YCH.Objects.Factory.Config.PropertyPathFactoryObject"/>
            is an <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation, and as such has
            to comply with the contract of the <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            interface; more specifically, this means that the end result of the property lookup path
            evaluation cannot be <see lang="null"/> (<see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            implementations are not permitted to return <see lang="null"/>). If the resut of a
            property lookup path evaluates to <see lang="null"/>, an exception will be thrown.
            </p>
            </remarks>
            <example>
            <code escaped="true">
            <!-- this is the target object -->
            <object id="foo" type="Whatever.MyClass, MyAssembly" singleton="false">
            	<!-- a System.String typed property -->
            	<property name="name" value="Chinua Achebe"/>
            </object>
            
            <!--
            	will result in "Chinua Achebe", which is the value of the 'name' property of the 'foo' object
            -->
            <object id="consumer" type="Spring.Objects.Factory.Config.PropertyPathFactoryObject, YCH.Core">
            	<property name="targetObject" ref="foo"/>
            	<property name="propertyPath" value="name"/>
            </object>
            
            <!--
            	will result in "Chinua Achebe", which is the value of the 'name' property of the 'foo' object
            -->
            <object id="foo.name" type="YCH.Objects.Factory.Config.PropertyPathFactoryObject, YCH.Core"/>
            
            <!--
            	will result in "Chinua Achebe", which is the value of the 'name' property of the 'foo' object
            -->
            <object id="consumer" type="YCH.Objects.Factory.Config.PropertyPathFactoryObject, YCH.Core">
            	<property name="targetObjectName" value="foo"/>
            	<property name="propertyPath" value="name"/>
            </object>
            
            <!--
            	will result in (the int value) '13', which is the value of the length property of the 'name'
            	property of the 'foo' object.
            	
            	in this case, the first 'part' of the id is taken to be the name of the target object ('foo');
            	the remainder of the name is taken to be the property lookup path
            -->
            <object id="foo.name.length" type="YCH.Objects.Factory.Config.PropertyPathFactoryObject, YCH.Core"/>
            </code>
            </example>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: PropertyPathFactoryObject.cs,v 1.2 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPathFactoryObject.GetObject">
            <summary>
            Return an instance (possibly shared or independent) of the object
            managed by this factory.
            </summary>
            <returns>
            An instance (possibly shared or independent) of the object managed by
            this factory.
            </returns>
            <see cref="M:YCH.Objects.Factory.IFactoryObject.GetObject"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObject">
            <summary>
            The target object that the property path lookup is to be applied to.
            </summary>
            <remarks>
            <p>
            This would most likely be an inner object, but can of course be
            any object reference.
            </p>
            </remarks>
            <value>
            The target object that the property path lookup is to be applied to.
            </value>
            <seealso cref="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObjectName"/> 
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObjectName">
            <summary>
            The (object) name of the target object that the property path lookup
            is to be applied to.
            </summary>
            <remarks>
            <p>
            Please note that any leading or trailing whitespace <b>will</b> be
            trimmed from this name prior to resolution. The implication of this is that
            one cannot use the <see cref="T:YCH.Objects.Factory.Config.PropertyPathFactoryObject"/>
            class in conjunction with object names that start or end with whitespace.
            </p>
            </remarks>
            <value>
            The (object) name of the target object that the property path lookup
            is to be applied to.
            </value>
            <seealso cref="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObject"/> 
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.PropertyPath">
            <summary>
            The property (lookup) path to be applied to the target object.
            </summary>
            <remarks>
            <p>
            Please note that any leading or trailing whitespace <b>will</b> be
            trimmed from this path prior to resolution. Whitespace is not a valid
            identifier for property names (in part or whole) in CLS-based languages,
            so this is a not unreasonable action. Please also note that whitespace
            that is embedded within the property path will be left as-is (which may
            or may not result in an error being thrown, depending on the context of
            the whitespace).
            </p>
            </remarks>
            <example>
            <p>
            Examples of such property lookup paths can be seen below; note that
            property lookup paths can be nested to an arbitrary level.
            </p>
            <code escaped="true">
            name.length
            accountManager.account['the key'].name
            accounts[0].name
            </code>
            </example>
            <value>
            The property (lookup) path to be applied to the target object.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.ResultType">
            <summary>
            The 'expected' <see cref="T:System.Type"/> of the result from evaluating the
            property path.
            </summary>
            <remarks>
            <p>
            This is not necessary for directly specified target objects, or
            singleton target objects, where the <see cref="T:System.Type"/> can
            be determined via reflection. Just specify this in case of a
            prototype target, provided that you need matching by type (for
            example, for autowiring).
            </p>
            <p>
            It is permissable to set the value of this property to
            <see lang="null"/> (which in any case is the default value).
            </p>
            </remarks>
            <value>
            The 'expected' <see cref="T:System.Type"/> of the result from evaluating the
            property path.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.ObjectType">
            <summary>
            Return the <see cref="T:System.Type"/> of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <see langword="null"/> if not known in advance.
            </summary>
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.IsSingleton">
            <summary>
            Is the object managed by this factory a singleton or a prototype?
            </summary>
            <see cref="P:YCH.Objects.Factory.IFactoryObject.IsSingleton"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.ObjectName">
            <summary>
            Set the name of the object in the object factory that created this object.
            </summary>
            <remarks>
            <p>
            The object name of this
            <see cref="T:YCH.Objects.Factory.Config.PropertyPathFactoryObject"/>
            will be interpreted as "objectName.property" pattern, if neither the
            <see cref="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObjectName"/>
            <see cref="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.TargetObject"/>
            have been supplied (set).
            </p>
            <p>
            This allows for concise object definitions with just an id or name.
            </p>
            </remarks>
            <value>
            The name of the object in the factory.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPathFactoryObject.ObjectFactory">
            <summary>
            Callback that supplies the owning factory to an object instance.
            </summary>
            <value>
            Owning <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            (may not be <see langword="null"/>). The object can immediately
            call methods on the factory.
            </value>
            <exception cref="T:YCH.Objects.Factory.IInitializingObject">
            In case of initialization errors.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer">
            <summary>
            Resolves placeholder values in one or more object definitions.
            </summary>
            <remarks>
            <p>
            The default placeholder syntax follows the NAnt style: <c>${...}</c>.
            Instances of this class can be configured in the same way as any other
            object in a YCH.NET container, and so custom placeholder prefix
            and suffix values can be set via the <see cref="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.PlaceholderPrefix"/>
            and <see cref="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.PlaceholderSuffix"/> properties.
            </p>
            <example>
            <p>
            The following example XML context definition defines an object that has
            a number of placeholders. The placeholders can easily be distinguished
            by the presence of the <c>${}</c> characters.
            </p>
            <code escaped="true">
            <object id="connStringProvider" type="MyNamespace.OracleConnectionStringProvider, MyAssembly">
            	<property name="dataSource" value="${database.datasource}"/>
            	<property name="userId" value="${database.userid}"/>
            	<property name="password" value="${database.password}"/>
            	<property name="integratedSecurity" value="${database.integratedsecurity}"/>
            </object>
            </code>
            <p>
            The associated XML configuration file for the above example containing the
            values for the placeholders would contain a snippet such as ..
            </p>
            <code escaped="true">
            <name-values>
            	<add key="database.datasource" value="MyOracleDB"/>
            	<add key="database.userid" value="sa"/>
            	<add key="database.password" value="g0ly4dk1n"/>
            	<add key="database.integratedsecurity" value="true"/>
            </name-values>
            </code>
            <p>
            The preceding XML snippet listing the various property keys and their
            associated values needs to be inserted into the .NET config file of
            your application (or Web.config file for your ASP.NET web application,
            as the case may be), like so...
            </p>
            <code escaped="true">
            <name-values>
            	<add key="database.datasource" value="MyOracleDB"/>
            	<add key="database.userid" value="sa"/>
            	<add key="database.password" value="g0ly4dk1n"/>
            	<add key="database.integratedsecurity" value="true"/>
            </name-values>
            </code>
            </example>
            <p>
            <see cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            checks simple property values, lists, dictionaries, and object names in
            runtime object references (
            <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>).
            Furthermore, placeholder values can also cross-reference other
            placeholders, in the manner of the following example where the
            <c>rootPath</c> property is cross-referenced by the <c>subPath</c>
            property.
            </p>
            <example>
            <code escaped="true">
            <name-values>
            	<add key="rootPath" value="myrootdir"/>
            	<add key="subPath" value="${rootPath}/subdir"/>
            </name-values>
            </code>
            </example>
            <p>
            In contrast to the
            <see cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>
            class, this configurer only permits the replacement of explicit
            placeholders in object definitions. Therefore, the original definition
            cannot specify any default values for its object properties, and the
            placeholder configuration file is expected to contain an entry for each
            defined placeholder. That is, if an object definition contains a
            placeholder <c>${foo}</c>, there should be an associated
            <c>&lt;add key="foo" value="..."/&gt;</c> entry in the
            referenced placeholder configuration file. Default property values
            can be defined via the inherited
            <see cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Properties"/>
            collection to overcome any perceived limitation of this feature.
            </p>
            <p>
            If a configurer cannot resolve a placeholder, and the value of the
            <see cref="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.IgnoreUnresolvablePlaceholders"/>
            property is currently set to <see langword="false"/>, an
            <see cref="T:YCH.Objects.Factory.ObjectDefinitionStoreException"/>
            will be thrown. If you want to resolve properties from multiple configuration
            resources, simply specify multiple resources via the
            <see cref="P:YCH.Objects.Factory.Config.PropertyResourceConfigurer.Locations"/>
            property. Finally, please note that you can also define multiple
            <see cref="T:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer"/>
            instances, each with their own custom placeholder syntax.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: PropertyPlaceholderConfigurer.cs,v 1.19 2005/12/27 15:00:25 fspinazzi Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyResourceConfigurer"/>
            <seealso cref="T:YCH.Objects.Factory.Config.PropertyOverrideConfigurer"/>
            <seealso cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>
        </member>
        <member name="F:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.DefaultPlaceholderPrefix">
            <summary>
            The default placeholder prefix.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.DefaultPlaceholderSuffix">
            <summary>
            The default placeholder suffix.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ProcessProperties(YCH.Objects.Factory.Config.IConfigurableListableObjectFactory,System.Collections.Specialized.NameValueCollection)">
            <summary>
            Apply the given properties to the supplied
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>.
            </summary>
            <param name="factory">
            The <see cref="T:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory"/>
            used by the application context.
            </param>
            <param name="props">The properties to apply.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If an error occured.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseObjectDefinition(System.Collections.Specialized.NameValueCollection,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Populates the supplied <paramref name="definition"/> with
            constructor arguments and property values stripped from the
            supplied <paramref name="properties"/> collection.
            </summary>
            <param name="properties">
            The map of constructor arguments and property values.
            </param>
            <param name="definition">
            The object definition being populated.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParsePropertyValues(System.Collections.Specialized.NameValueCollection,YCH.Objects.MutablePropertyValues)">
            <summary>
            Populates the supplied <paramref name="propertyValues"/> with
            property values ripped from the supplied collection of unresolved
            <paramref name="properties"/>.
            </summary>
            <param name="properties">
            The map of (unresolved) property values.
            </param>
            <param name="propertyValues">
            The collection of property values that will be populated with
            resolved properties.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseIndexedArgumentValues(System.Collections.Specialized.NameValueCollection,System.Collections.IDictionary)">
            <summary>
            Populates the supplied <paramref name="properties"/> with
            constructor arguments ripped from the supplied collection of unresolved
            indexed <paramref name="arguments"/>.
            </summary>
            <param name="properties">
            The collection of property values that will be populated with
            resolved constructor arguments.
            </param>
            <param name="arguments">
            The map of (unresolved) constructor arguments.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseNamedArgumentValues(System.Collections.Specialized.NameValueCollection,System.Collections.IDictionary)">
            <summary>
            Populates the supplied <paramref name="properties"/> with
            constructor arguments ripped from the supplied collection of unresolved
            named <paramref name="arguments"/>.
            </summary>
            <param name="properties">
            The collection of property values that will be populated with
            resolved constructor arguments.
            </param>
            <param name="arguments">
            The map of (named) constructor arguments.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseGenericArgumentValues(System.Collections.Specialized.NameValueCollection,System.Collections.IList)">
            <summary>
            Populates the supplied <paramref name="properties"/> with
            constructor arguments ripped from the supplied collection of unresolved
            generic <paramref name="arguments"/>.
            </summary>
            <param name="properties">
            The collection of property values that will be populated with
            resolved constructor arguments.
            </param>
            <param name="arguments">
            The dictionary of (unresolved) constructor arguments.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseValue(System.Collections.Specialized.NameValueCollection,System.Object)">
            <summary>
            Parses an unresolved value.
            </summary>
            <param name="properties">
            The map of constructor arguments and property values.
            </param>
            <param name="value">
            The value that is to be resolved.
            </param>
            <returns>The resolved value.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseList(System.Collections.Specialized.NameValueCollection,System.Collections.IList)">
            <summary>
            Parses the given <see cref="T:System.Collections.IList"/>, exchanging
            it's values if necessary.
            </summary>
            <param name="properties">
            The map of constructor arguments / property values.
            </param>
            <param name="list">
            The <see cref="T:System.Collections.IList"/> that is to be resolved.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseSet(System.Collections.Specialized.NameValueCollection,YCH.Collections.ISet)">
            <summary>
            Parse the given <see cref="T:YCH.Collections.ISet"/>, exchanging it's
            values if necessary.
            </summary>
            <param name="properties">
            The map of constructor arguments / property values.
            </param>
            <param name="theSet">
            The <see cref="T:YCH.Collections.ISet"/> that is to be resolved.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseDictionary(System.Collections.Specialized.NameValueCollection,System.Collections.IDictionary)">
            <summary>
            Parse the given <see cref="T:System.Collections.IDictionary"/>, exchanging
            it's values if necessary.
            </summary>
            <param name="properties">
            The map of constructor arguments / property values.
            </param>
            <param name="dictionary">
            The <see cref="T:System.Collections.IDictionary"/> that is to be resolved.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ParseString(System.Collections.Specialized.NameValueCollection,System.String,System.String)">
            <summary>
            Parse values recursively to be able to resolve cross-references between
            placeholder values.
            </summary>
            <param name="properties">
            The map of constructor arguments / property values.
            </param>
            <param name="strVal">The string to be resolved.</param>
            <param name="originalPlaceholder"></param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If an error occurs.
            </exception>
            <returns>The resolved string.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ResolvePlaceholder(System.String,System.Collections.Specialized.NameValueCollection,YCH.Objects.Factory.Config.EnvironmentVariableMode)">
            <summary>
            Resolve the given placeholder using the given name value collection,
            performing an environment variables check according to the given mode.
            </summary>
            <remarks>
            <p>
            The default implementation delegates to 
            <see cref="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ResolvePlaceholder(System.String,System.Collections.Specialized.NameValueCollection)"/>
            before/afer the environment variable check. Subclasses can override
            this for custom resolution strategies, including customized points
            for the environment properties check.
            </p>
            </remarks>
            <param name="placeholder">The placeholder to resolve</param>
            <param name="props">
            The merged name value collection of this configurer.
            </param>
            <param name="mode">The environment variable mode.</param>
            <returns>
            The resolved value or <see langword="null"/> if none.
            </returns>
            <seelso cref="T:YCH.Objects.Factory.Config.EnvironmentVariableMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.ResolvePlaceholder(System.String,System.Collections.Specialized.NameValueCollection)">
            <summary>
            Resolve the given placeholder using the given name value collection.
            </summary>
            <remarks>
            <p>
            This (the default) implementation simply looks up the value of the
            supplied <paramref name="placeholder"/> key.
            </p>
            <p>
            Subclasses can override this for customized placeholder-to-key
            mappings or custom resolution strategies, possibly just using the
            given name value collection as fallback.
            </p>
            </remarks>
            <param name="placeholder">The placeholder to resolve.</param>
            <param name="props">
            The merged name value collection of this configurer.
            </param>
            <returns>The resolved value.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.PlaceholderPrefix">
            <summary>
            The placeholder prefix (the default is <c>${</c>).
            </summary>
            <seealso cref="F:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.DefaultPlaceholderPrefix"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.PlaceholderSuffix">
            <summary>
            The placeholder suffix (the default is <c>}</c>)
            </summary>
            <seealso cref="F:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.DefaultPlaceholderSuffix"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.IgnoreUnresolvablePlaceholders">
            <summary>
            Indicates whether unresolved placeholders should be ignored.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyPlaceholderConfigurer.EnvironmentVariableMode">
            <summary>
            Controls how environment variables will be used to 
            replace property placeholders.
            </summary>
            <remarks>
            <p>
            See the overview of the
            <see cref="T:YCH.Objects.Factory.Config.EnvironmentVariableMode"/>
            enumeration for the available options.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject">
            <summary>
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> implementation that
            retrieves a <see lang="static"/> or non-static <b>public</b> property value.
            </summary>
            <remarks>
            <p>
            Typically used for retrieving <b>public</b> property values.
            </p>
            </remarks>
            <author>Rick Evans (.NET)</author>
            <version>$Id: PropertyRetrievingFactoryObject.cs,v 1.9 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all object properties supplied
            (and satisfied <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            and ApplicationContextAware).
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.CreateInstance">
            <summary>
            Template method that subclasses must override to construct the object
            returned by this factory.
            </summary>
            <exception cref="T:System.Exception">
            If an exception occured during object creation.
            </exception>
            <returns>The object returned by this factory.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.StaticProperty">
            <summary>
            The <see cref="P:System.Type.AssemblyQualifiedName"/> of the static property
            to be retrieved.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.Arguments">
            <summary>
            Arguments for the property invocation.
            </summary>
            <remarks>
            <p>
            If this property is not set, or the value passed to the setter invocation
            is a null or zero-length array, a property with no arguments is assumed.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.TargetProperty">
            <summary>
            The name of the property the value of which is to be retrieved.
            </summary>
            <remarks>
            <p>
            Refers to either a <see lang="static"/> property or a non-static property,
            depending on a target object being set.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.TargetObject">
            <summary>
            The object instance on which the property is defined.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.TargetType">
            <summary>
            The <see cref="T:System.Type"/> on which the property is defined.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.PropertyRetrievingFactoryObject.ObjectType">
            <summary>
            Return the type of object that this
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates, or
            <see lang="null"/> if not known in advance.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.ResourceManagerFactoryObject">
            <summary>
            A convenience class to create a
            <see cref="T:System.Resources.ResourceManager"/> given the resource base
            name and assembly name.
            </summary>
            <remarks>
            <p>
            This is currently the preferred way of injecting resources into view
            tier components (such as Windows Forms GUIs and ASP.NET ASPX pages).
            A GUI component (typically a Windows Form) is injected with
            an <see cref="T:System.Resources.ResourceManager"/> instance, and can
            then proceed to use the various <c>GetXxx()</c> methods on the
            <see cref="T:System.Resources.ResourceManager"/> to retrieve images,
            strings, custom resources, etc.
            </p>
            </remarks>
            <author>Mark Pollack</author>
            <version>$Id: ResourceManagerFactoryObject.cs,v 1.10 2006/02/08 08:31:05 aseovic Exp $</version>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.GetObject"/>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.CreateInstance"/>
            <seealso cref="T:System.Resources.ResourceManager"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ResourceManagerFactoryObject.CreateInstance">
            <summary>
            Creates a <see cref="T:System.Resources.ResourceManager"/>.
            </summary>
            <exception cref="T:System.Exception">
            If an exception occured during object creation.
            </exception>
            <returns>The object returned by this factory.</returns>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.GetObject"/>
            <seealso cref="M:YCH.Objects.Factory.Config.AbstractFactoryObject.CreateInstance"/>
        </member>
        <member name="M:YCH.Objects.Factory.Config.ResourceManagerFactoryObject.AfterPropertiesSet">
            <summary>
            Invoked by an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            after it has set all object properties supplied
            (and satisfied the
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>
            and <see cref="T:YCH.Context.IApplicationContextAware"/>
            interfaces).
            </summary>
            <exception cref="T:System.Exception">
            In the event of misconfiguration (such as failure to set an essential
            property) or if initialization fails.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ResourceManagerFactoryObject.BaseName">
            <summary>
            The root name of the resources.
            </summary>
            <remarks>
            <p>
            For example, the root name for the resource file named
            "MyResource.en-US.resources" is "MyResource".
            </p>
            <note>
            The namespace is also prefixed before the resource file name.
            </note>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ResourceManagerFactoryObject.AssemblyName">
            <summary>
            The string representation of the assembly that contains the resource.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.ResourceManagerFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Resources.ResourceManager"/> <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Config.RuntimeObjectReference">
            <summary>
            Immutable placeholder class used for the value of a
            <see cref="T:YCH.Objects.PropertyValue"/> object when it's a reference
            to another object in this factory to be resolved at runtime.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Config.RuntimeObjectReference.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>
            class.
            </summary>
            <remarks>
            <p>
            This does <b>not</b> mark this object as being a reference to
            another object in any parent factory.
            </p>
            </remarks>
            <param name="objectName">The name of the target object.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.RuntimeObjectReference.#ctor(System.String,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>
            class.
            </summary>
            <remarks>
            <p>
            This variant constructor allows a client to specifiy whether or not
            this object is a reference to another object in a parent factory.
            </p>
            </remarks>
            <param name="objectName">The name of the target object.</param>
            <param name="isToParent">
            Whether this object is an explicit reference to an object in a
            parent factory.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Config.RuntimeObjectReference.ToString">
            <summary>
            Returns a string representation of this instance.
            </summary>
            <returns>A string representation of this instance.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.RuntimeObjectReference.ObjectName">
            <summary>
            Return the target object name.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Config.RuntimeObjectReference.IsToParent">
            <summary>
            Is this is an explicit reference to an object in the parent
            factory?
            </summary>
            <value>
            <see langword="true"/> if this is an explicit reference to an
            object in the parent factory.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Config.SetFactoryObject">
            <summary>
            Simple factory object for shared <see cref="T:YCH.Collections.ISet"/> instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: SetFactoryObject.cs,v 1.8 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.SetFactoryObject.CreateInstance">
            <summary>
            Constructs a new instance of the target set.
            </summary>
            <returns>The new <see cref="T:YCH.Collections.ISet"/> instance.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Config.SetFactoryObject.SourceSet">
            <summary>
            Set the source <see cref="T:YCH.Collections.ISet"/>.
            </summary>
            <remarks>
            <p>
            This value will be used to populate the <see cref="T:YCH.Collections.ISet"/>
            returned by this factory.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.SetFactoryObject.TargetSetType">
            <summary>
            Set the <see cref="T:System.Type"/> of the <see cref="T:YCH.Collections.ISet"/>
            implementation to use.
            </summary>
            <remarks>
            <p>
            The default is the <see cref="T:YCH.Collections.HybridSet"/> <see cref="T:System.Type"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.SetFactoryObject.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of objects created by this factory.
            </summary>
            <value>
            Always returns the <see cref="T:YCH.Collections.ISet"/> <see cref="T:System.Type"/>.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Config.TypedStringValue">
            <summary>
            Holder for a typed <see cref="T:System.String"/> value.
            </summary>
            <remarks>
            <p>
            Can be added to object definitions to explicitly specify
            a target type for a <see cref="T:System.String"/> value,
            for example for collection
            elements.
            </p>
            <p>
            This holder is pretty dumb (i.e. it has no logic of its own); it
            just stores the <see cref="T:System.String"/> value and the target
            <see cref="T:System.Type"/>. The actual conversion will be performed by
            the surrounding object factory.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: TypedStringValue.cs,v 1.4 2006/04/09 07:18:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Config.TypedStringValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.TypedStringValue"/>
            class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Config.TypedStringValue.#ctor(System.String,System.Type)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Config.TypedStringValue"/>
            class.
            </summary>
            <param name="value">
            The value that is to be converted.
            </param>
            <param name="targetType">
            The <see cref="T:System.Type"/> to convert to.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="targetType"/> is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Config.TypedStringValue.Value">
            <summary>
            The value that is to be converted. 
            </summary>
            <remarks>
            <p>
            Obviously if the
            <see cref="P:YCH.Objects.Factory.Config.TypedStringValue.TargetType"/>
            is the <see cref="T:System.String"/> <see cref="T:System.Type"/>, no conversion
            will actually be performed.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Config.TypedStringValue.TargetType">
            <summary>
            The <see cref="T:System.Type"/> to convert to.
            </summary>
            <exception cref="T:System.ArgumentNullException">
            If the setter is supplied with a <see langword="null"/> value.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory">
            <summary>
            Abstract <see cref="T:YCH.Objects.Factory.IObjectFactory"/> superclass
            that implements default object creation.
            </summary>
            <remarks>
            <p>
            Provides object creation, initialization and wiring, supporting
            autowiring and constructor resolution. Handles runtime object
            references, managed collections, and object destruction.
            </p>
            <p>
            The main template method to be implemented by subclasses is
            <see cref="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.FindMatchingObjects(System.Type)"/>,
            used for autowiring by type. Note that this class does not implement object
            definition registry capabilities
            (<see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>
            does).
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: AbstractAutowireCapableObjectFactory.cs,v 1.51 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AbstractObjectFactory">
            <summary>
            Abstract superclass for <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            implementations.
            </summary>
            <remarks>
            <p>
            This class provides singleton / prototype determination, singleton caching,
            object definition aliasing, <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            handling, and object definition merging for child object definitions.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: AbstractObjectFactory.cs,v 1.49 2006/05/03 01:13:42 aseovic Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Support.AbstractObjectFactory.CURRENTLY_IN_CREATION">
            <summary>
            Marker object to be temporarily registered in the singleton cache,
            while instantiating an object (in order to be able to detect circular references).
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.AbstractObjectFactory.log">
            <summary>
            The <see cref="T:log4net.ILog"/> instance for this class (and derived classes).
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectFactory"/> class.
            </summary>
            <remarks>
            <p>
            This constructor implicitly creates an
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectFactory"/>
            that treats the names of objects in this factory in a case-sensitive fashion.
            </p>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.#ctor(System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectFactory"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
            <param name="caseSensitive">
            <see lang="true"/> if the names of objects in this factory are to be treated in a
            case-sensitive fashion.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.#ctor(System.Boolean,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectFactory"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
            <param name="caseSensitive">
            <see lang="true"/> if the names of objects in this factory are to be treated in a
            case-sensitive fashion.
            </param>
            <param name="parentFactory">
            Any parent object factory; may be <see lang="null"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObject(System.String,System.Type,System.Object[])">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> the object may match. Can be an interface or
            superclass of the actual class. For example, if the value is the
            <see cref="T:System.Object"/> class, this method will succeed whatever the
            class of the returned instance.
            </param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a <see lang="static"/> factory method. If there is no factory method and the
            supplied <paramref name="arguments"/> array is not <see lang="null"/>, then
            match the argument values by type and call the object's constructor.
            </param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectNotOfRequiredTypeException">
            If the object is not of the required type.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ApplyObjectPropertyValues(System.Object,System.String)">
            <summary>
            Apply the property values of the object definition with the supplied
            <paramref name="name"/> to the supplied <paramref name="instance"/>.
            </summary>
            <remarks>
            <p>
            The object definition can either define a fully self-contained object,
            reusing it's property values, or just property values meant to be used
            for existing object instances.
            </p>
            </remarks>
            <param name="instance">
            The existing object that the property values for the named object will
            be applied to.
            </param>
            <param name="name">
            The name of the object definition associated with the property values that are
            to be applied.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.InitObjectWrapper(YCH.Objects.IObjectWrapper)">
            <summary>
            Initializes the given <see cref="T:YCH.Objects.IObjectWrapper"/> with the
            custom <see cref="T:System.ComponentModel.TypeConverter"/>s registered with
            this factory.
            </summary>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> to initialise.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.CreateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])">
            <summary>
            Create an object instance for the given object definition.
            </summary>
            <remarks>
            <p>
            The object definition will already have been merged with the parent
            definition in case of a child definition.
            </p>
            <p>
            All the other methods in this class invoke this method, although objects
            may be cached after being instantiated by this method. All object
            instantiation within this class is performed by this method.
            </p>
            </remarks>
            <param name="name">The name of the object.</param>
            <param name="definition">
            The object definition for the object that is to be instantiated.
            </param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a <see lang="static"/>  factory method. If there is no factory method and the
            supplied <paramref name="arguments"/> array is not <see lang="null"/>,
            then match the argument values by type and call the object's constructor.
            </param>
            <returns>
            A new instance of the object.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.DestroyObject(System.String,System.Object)">
            <summary>
            Destroy the target object.
            </summary>
            <remarks>
            <p>
            Must destroy objects that depend on the given object before the object itself,
            nor throw an exception.
            </p>
            </remarks>
            <param name="name">
            The name of the object.
            </param>
            <param name="target">
            The target object instance to destroyed.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ContainsObjectDefinition(System.String)">
            <summary>
            Does this object factory contain an object definition with the
            supplied <paramref name="name"/>?
            </summary>
            <remarks>
            <p>
            Does not consider any hierarchy this factory may participate in.
            Invoked by
            <see cref="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ContainsObject(System.String)"/>
            when no cached singleton instance is found.
            </p>
            </remarks>
            <param name="name">
            The name of the object to look for.
            </param>
            <returns>
            <see lang="true"/> if this object factory contains an object
            definition with the supplied <paramref name="name"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.AddSingleton(System.String,System.Object)">
            <summary>
            Adds the supplied <paramref name="singleton"/> (object) to this factory's
            singleton cache.
            </summary>
            <remarks>
            <p>
            To be called for eager registration of singletons, e.g. to be able to
            resolve circular references.
            </p>
            <note>
            If a singleton has already been registered under the same name as
            the supplied <paramref name="name"/>, then the old singleton will
            be replaced.
            </note>
            </remarks>
            <param name="name">The name of the object.</param>
            <param name="singleton">The singleton object.</param>
            <exception cref="T:System.ArgumentNullException">
            If the <paramref name="name"/> argument is <see langword="null"/>
            or consists wholly of whitespace characters; or if the
            <paramref name="singleton"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.TransformedObjectName(System.String)">
            <summary>
            Return the object name, stripping out the factory dereference prefix if
            necessary, and resolving aliases to canonical names.
            </summary>
            <param name="name">
            The transformed name of the object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetMergedObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return a <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>,
            even by traversing parent if the parameter is a child definition.
            </summary>
            <param name="name">
            The name of the object.
            </param>
            <param name="includingAncestors">
            Are ancestors to be included in the merge?
            </param>
            <remarks>
            <p>
            Will ask the parent object factory if not found in this instance.
            </p>
            </remarks>
            <returns>
            A merged <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            with overridden properties.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetMergedObjectDefinition(System.String,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Return a <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>,
            even by traversing parent if the parameter is a child definition.
            </summary>
            <returns>
            A merged <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            with overridden properties.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.MergeObjectDefinitions(System.String,YCH.Objects.Factory.Config.IObjectDefinition,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Merges the object definitions.
            </summary>
            <param name="name">Object definition name.</param>
            <param name="parentDefinition">The parent definition.</param>
            <param name="childDefinition">The child definition.</param>
            <returns>Merged object definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.CreateRootObjectDefinition(YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Creates the root object definition.
            </summary>
            <param name="templateDefinition">The template definition to base root definition on.</param>
            <returns>Root object definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObjectDefinition(System.String)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="includeAncestors">Whether to search parent object factories.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObjectForSharedInstance(System.String,System.Object)">
            <summary>
            Get the object for the given shared object, either the object
            instance itself or its created object in case of an
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>.
            </summary>
            <param name="name">
            The name that may include the factory dereference prefix.
            </param>
            <param name="instance">The shared object instance.</param>
            <returns>
            The singleton instance of the object.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetFactoryObject(System.String)">
            <summary>
            Convenience method to pull an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            from this factory.
            </summary>
            <param name="objectName">
            The name of the factory object to be retrieved. If this name is not a valid
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> name, it will be converted
            into one.
            </param>
            <returns>
            The <see cref="T:YCH.Objects.Factory.IFactoryObject"/> associated with the
            supplied <paramref name="objectName"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.IsFactoryDereference(System.String)">
            <summary>
            Is the supplied <paramref name="name"/> a factory object dereference?
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.IsFactoryObject(System.String)">
            <summary>
            Is the object (definition) with the supplied <paramref name="name"/> an
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>?
            </summary>
            <param name="name">The name of the object to be checked.</param>
            <returns>
            <see lang="true"/> the object (definition) with the supplied
            <paramref name="name"/> an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>?
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.RemoveSingleton(System.String)">
            <summary>
            Remove the object identified by the supplied <paramref name="name"/>
            from this factory's singleton cache.
            </summary>
            <param name="name">
            The name of the object that is to be removed from the singleton
            cache.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the <paramref name="name"/> argument is <see langword="null"/> or
            consists wholly of whitespace characters.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetSingletonNames(System.Type)">
            <summary>
            Return the names of objects in the singleton cache that match the given
            object type (including subclasses).
            </summary>
            <param name="type">
            The class or interface to match, or <see langword="null"/> for all object names.
            </param>
            <remarks>
            <p>
            Will <i>not</i> consider <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s
            as the type of their created objects is not known before instantiation.
            </p>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <returns>
            The names of objects in the singleton cache that match the given
            object type (including subclasses), or an empty array if none.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetType(System.String)">
            <summary>
            Determines the <see cref="T:System.Type"/> of the object with the
            supplied <paramref name="name"/>.
            </summary>
            <remarks>
            <p>
            More specifically, checks the <see cref="T:System.Type"/> of object that
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/> would return.
            For an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>, returns the
            <see cref="T:System.Type"/> of object that the
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates.
            </p>
            <p>
            Please note that (prototype) objects created via a factory method or
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> objects are handled
            slightly differently, in that we <b>don't</b> want to needlessly create
            instances of such objects just to determine the <see cref="T:System.Type"/>
            of object that they create.
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>
            The <see cref="T:System.Type"/> of the object or <see langword="null"/>
            if not determinable.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetTypeForFactoryMethod(System.String,YCH.Objects.Factory.Support.RootObjectDefinition)">
            <summary>
            Determines the <see cref="T:System.Type"/> of the object defined
            by the supplied object <paramref name="definition"/>. 
            </summary>
            <remarks>
            <p>
            This, the default, implementation returns <see lang="null"/>
            to indicate that the type cannot be determined. Subclasses are
            encouraged to try to determine the actual return
            <see cref="T:System.Type"/> here, matching their strategy of resolving
            factory methods in the
            <see cref="M:YCH.Objects.Factory.Support.AbstractObjectFactory.CreateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])"/>
            implementation.
            </p>
            </remarks>
            <param name="objectName">
            The name associated with the supplied object <paramref name="definition"/>.
            </param>
            <param name="definition">
            The <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            that the <see cref="T:System.Type"/> is to be determined for. 
            </param>
            <returns>
            The <see cref="T:System.Type"/> of the object defined by the supplied
            object <paramref name="definition"/>; or <see lang="null"/> if the
            <see cref="T:System.Type"/> cannot be determined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetSingletonNames">
            <summary>
            Returns the names of the objects in the singleton cache.
            </summary>
            <remarks>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <returns>The names of the objects in the singleton cache.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetSingletonCount">
            <summary>
            Returns the number of objects in the singleton cache.
            </summary>
            <remarks>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <returns>The number of objects in the singleton cache.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.DestroySingleton(System.String)">
            <summary>
            Destroys the named singleton object.
            </summary>
            <remarks>
            <p>
            Delegates to
            <see cref="M:YCH.Objects.Factory.Support.AbstractObjectFactory.DestroyObject(System.String,System.Object)"/>
            if a corresponding singleton instance is found.
            </p>
            </remarks>
            <param name="name">
            The name of the singleton object that is to be destroyed.
            </param>
            <seealso cref="M:YCH.Objects.Factory.Support.AbstractObjectFactory.DestroyObject(System.String,System.Object)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.CheckMergedObjectDefinition(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,System.Type,System.Object[])">
            <summary>
            Check the supplied merged object definition for any possible
            validation errors.
            </summary>
            <param name="mergedObjectDefinition">
            The object definition to be checked for validation errors.
            </param>
            <param name="objectName">
            The name of the object associated with the supplied object definition.
            </param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> the object may match. Can be an interface or
            superclass of the actual class. For example, if the value is the
            <see cref="T:System.Object"/> class, this method will succeed whatever the
            class of the returned instance.
            </param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a <see lang="static"/> factory method. If there is no factory method and the
            supplied <paramref name="arguments"/> array is not <see lang="null"/>, then
            match the argument values by type and call the object's constructor.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of object validation errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.IsTemporarySingletonPlaceHolder(System.Object)">
            <summary>
            Is the supplied <paramref name="resolvedValue"/> the temporary object
            that is placed into the singleton cache during object resolution?
            </summary>
            <param name="resolvedValue">
            The value to be checked.
            </param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="resolvedValue"/> is
            the temporary object that was previously placed into the singleton cache
            during object resolution.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.IsSingleton(System.String)">
            <summary>
            Is this object a singleton?
            </summary>
            <see cref="M:YCH.Objects.Factory.IObjectFactory.IsSingleton(System.String)"/> 
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ContainsObject(System.String)">
            <summary>
            Does this object factory contain an object with the given name?
            </summary>
            <remarks>
            This method does not (and it should not) check if the specified
            object exists in one of the parent object factories. If it did,
            message sources and event registries within application context 
            hierarchy would have circular references, which would cause stack
            overflows during message lookup, for example. (A. Seovic)
            </remarks>
            <see cref="M:YCH.Objects.Factory.IObjectFactory.ContainsObject(System.String)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetAliases(System.String)">
            <summary>
            Return the aliases for the given object name, if defined.
            </summary>
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetAliases(System.String)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObject(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObject(System.String,System.Object[])">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <remarks>
            <p>
            This method allows an object factory to be used as a replacement for the
            Singleton or Prototype design pattern.
            </p>
            <p>
            Note that callers should retain references to returned objects. There is no
            guarantee that this method will be implemented to be efficient. For example,
            it may be synchronized, or may need to run an RDBMS query.
            </p>
            <p>
            Will ask the parent factory if the object cannot be found in this factory
            instance.
            </p>
            </remarks>
            <param name="name">The name of the object to return.</param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a static factory method. If there is no factory method and the
            arguments are not null, then match the argument values by type and
            call the object's constructor.
            </param>
            <returns>The instance of the object.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.FindObjectInCache(System.String)">
            <summary>
            Tries to find a cached object for the specified name. 
            </summary>
            <param name="objectName">Teh object name to look for.</param>
            <returns>The cached object if found, <see langword="null"/> otherwise.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.CreateAndCacheSingletonInstance(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])">
            <summary>
            Creates a singleton instance for the specified object name and definition.
            </summary>
            <param name="objectName">
            The object name (will be used as the key in the singleton cache key).
            </param>
            <param name="objectDefinition">The object definition.</param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a static factory method. If there is no factory method and the
            arguments are not null, then match the argument values by type and
            call the object's constructor.
            </param>
            <returns>The created object instance.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.GetObject(System.String,System.Type)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ConfigureObject(System.Object)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ConfigureObject(System.Object,System.String)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance
            using the named object definition.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.Dispose">
            <summary>
            Destroy all cached singletons in this factory.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.IgnoreDependencyType(System.Type)">
            <summary>
            Ignore the given dependency type for autowiring
            </summary>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.IgnoreDependencyType(System.Type)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.AddObjectPostProcessor(YCH.Objects.Factory.Config.IObjectPostProcessor)">
            <summary>
            Add a new <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            that will get applied to objects created by this factory.
            </summary>
            <param name="objectPostProcessor">
            The <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>
            to register.
            </param>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.AddObjectPostProcessor(YCH.Objects.Factory.Config.IObjectPostProcessor)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.RegisterAlias(System.String,System.String)">
            <summary>
            Given an object name, create an alias.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterAlias(System.String,System.String)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.RegisterSingleton(System.String,System.Object)">
            <summary>
            Register the given existing object as singleton in the object factory,
            under the given object name.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterSingleton(System.String,System.Object)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)">
            <summary>
            Register the given custom <see cref="T:System.ComponentModel.TypeConverter"/>
            for all properties of the given <see cref="T:System.Type"/>.
            </summary>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.RegisterCustomConverter(System.Type,System.ComponentModel.TypeConverter)"/>.
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectFactory.ContainsSingleton(System.String)">
            <summary>
            Does this object factory contains a singleton instance with the
            supplied <paramref name="name"/>?
            </summary>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ContainsSingleton(System.String)"/>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectFactory.ObjectPostProcessors">
            <summary>
            Gets the <see cref="T:System.Collections.IList"/> of
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            that will be applied to objects created by this factory.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectFactory.IgnoredDependencyTypes">
            <summary>
            Gets the set of classes that will be ignored for autowiring.
            </summary>
            <remarks>
            <p>
            The elements of this <see cref="T:YCH.Collections.ISet"/> are
            <see cref="T:System.Type"/>s.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectFactory.ParentObjectFactory">
            <summary>
            The parent object factory, or <see langword="null"/> if there is none.
            </summary>
            <value>
            The parent object factory, or <see langword="null"/> if there is none.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectFactory.Item(System.String)">
            <summary>
            Return an instance (possibly shared or independent) of the given object name.
            </summary>
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>.
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectFactory.ObjectPostProcessorCount">
            <summary>
            Returns the current number of registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </summary>
            <value>
            The current number of registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s.
            </value>
            <seealso cref="P:YCH.Objects.Factory.Config.IConfigurableObjectFactory.ObjectPostProcessorCount"/>.
        </member>
        <member name="F:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.MethodResolutionFlags">
            <summary>
            The <see cref="T:System.Reflection.BindingFlags"/> used during the invocation and
            searching for of methods.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.#ctor(System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.#ctor(System.Boolean,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
            <param name="parentFactory">The parent object factory, or <see langword="null"/> if none.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.GetTypeForFactoryMethod(System.String,YCH.Objects.Factory.Support.RootObjectDefinition)">
            <summary>
            Determines the <see cref="T:System.Type"/> of the object defined
            by the supplied object <paramref name="definition"/>. 
            </summary>
            <param name="objectName">
            The name associated with the supplied object <paramref name="definition"/>.
            </param>
            <param name="definition">
            The <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            that the <see cref="T:System.Type"/> is to be determined for. 
            </param>
            <returns>
            The <see cref="T:System.Type"/> of the object defined by the supplied
            object <paramref name="definition"/>; or <see lang="null"/> if the
            <see cref="T:System.Type"/> cannot be determined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ApplyObjectPropertyValues(System.Object,System.String)">
            <summary>
            Apply the property values of the object definition with the supplied
            <paramref name="name"/> to the supplied <paramref name="instance"/>.
            </summary>
            <param name="instance">
            The existing object that the property values for the named object will
            be applied to.
            </param>
            <param name="name">
            The name of the object definition associated with the property values that are
            to be applied.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ApplyObjectPostProcessorsBeforeInstantiation(System.Type,System.String)">
            <summary>
            Apply any
            <see cref="T:YCH.Objects.Factory.Config.IInstantiationAwareObjectPostProcessor"/>s.
            </summary>
            <remarks>
            <p>
            The returned instance may be a wrapper around the original.
            </p>
            </remarks>
            <param name="objectType">
            The <see cref="T:System.Type"/> of the object that is to be
            instantiated.
            </param>
            <param name="objectName">
            The name of the object that is to be instantiated.
            </param>
            <returns>
            An instance to use in place of the original instance.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ApplyPropertyValues(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.IObjectWrapper,YCH.Objects.IPropertyValues)">
            <summary>
            Apply the given property values, resolving any runtime references
            to other objects in this object factory.
            </summary>
            <param name="name">
            The object name passed for better exception information.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object.
            </param>
            <param name="properties">
            The new property values.
            </param>
            <remarks>
            <p>
            Must use deep copy, so that we don't permanently modify this property.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.UnsatisfiedObjectProperties(YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.IObjectWrapper)">
            <summary>
            Return an array of object-type property names that are unsatisfied.
            </summary>
            <remarks>
            <p>
            These are probably unsatisfied references to other objects in the
            factory. Does not include simple properties like primitives or
            <see cref="T:System.String"/>s.
            </p>
            </remarks>
            <returns>
            An array of object-type property names that are unsatisfied.
            </returns>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Dispose">
            <summary>
            Destroy all cached singletons in this factory.
            </summary>
            <remarks>
            <p>
            To be called on shutdown of a factory.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.PopulateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.IObjectWrapper)">
            <summary>
            Populate the object instance in the given
            <see cref="T:YCH.Objects.IObjectWrapper"/> with the property values from the
            object definition.
            </summary>
            <param name="name">
            The name of the object.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.WireEvents(System.String,YCH.Objects.Factory.Config.IConfigurableObjectDefinition,YCH.Objects.IObjectWrapper)">
            <summary>
            Wires up any exposed events in the object instance in the given
            <see cref="T:YCH.Objects.IObjectWrapper"/> with any event handler
            values from the <paramref name="definition"/>.
            </summary>
            <param name="name">
            The name of the object.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireByName(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.IObjectWrapper,YCH.Objects.MutablePropertyValues)">
            <summary>
            Fills in any missing property values with references to
            other objects in this factory if autowire is set to
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.ByName"/>.
            </summary>
            <param name="name">
            The object name to be autowired by <see cref="T:System.Type"/>.
            </param>
            <param name="definition">
            The definition of the named object to update through autowiring.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object (and
            from which we can rip out information concerning the object).
            </param>
            <param name="properties">
            The property values to register wired objects with.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireByType(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.IObjectWrapper,YCH.Objects.MutablePropertyValues)">
            <summary>
            Defines "autowire by type" (object properties by type) behavior.
            </summary>
            <remarks>
            <p>
            This is like PicoContainer default, in which there must be exactly one object
            of the property type in the object factory. This makes object factories simple
            to configure for small namespaces, but doesn't work as well as standard Spring
            behavior for bigger applications.
            </p>
            </remarks>
            <param name="name">
            The object name to be autowired by <see cref="T:System.Type"/>.
            </param>
            <param name="definition">
            The definition of the named object to update through autowiring.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object (and
            from which we can rip out information concerning the object).
            </param>
            <param name="properties">
            The property values to register wired objects with.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.CreateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])">
            <summary>
            Create an object instance for the given object definition.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="definition">
            The object definition for the object that is to be instantiated.
            </param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a static factory method. It is invalid to use a non-<see langword="null"/> arguments value
            in any other case.
            </param>
            <returns>
            A new instance of the object.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
            <remarks>
            <p>
            Delegates to the
            <see cref="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.CreateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[],System.Boolean)"/>
            method version with the <c>allowEagerCaching</c> parameter set to <b>true</b>.
            </p>
            <p>
            The object definition will already have been merged with the parent
            definition in case of a child definition.
            </p>
            <p>
            All the other methods in this class invoke this method, although objects
            may be cached after being instantiated by this method. All object
            instantiation within this class is performed by this method.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.CreateObject(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[],System.Boolean)">
            <summary>
            Create an object instance for the given object definition.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="definition">
            The object definition for the object that is to be instantiated.
            </param>
            <param name="arguments">
            The arguments to use if creating a prototype using explicit arguments to
            a static factory method. It is invalid to use a non-<see langword="null"/> arguments value
            in any other case.
            </param>
            <param name="allowEagerCaching">
            Whether eager caching of singletons is allowed... typically true for
            singlton objects, but never true for inner object definitions.
            </param>
            <returns>
            A new instance of the object.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
            <remarks>
            <p>
            The object definition will already have been merged with the parent
            definition in case of a child definition.
            </p>
            <p>
            All the other methods in this class invoke this method, although objects
            may be cached after being instantiated by this method. All object
            instantiation within this class is performed by this method.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiateUsingFactoryMethod(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])">
            <summary>
            Instantiate an object instance using a named factory method.
            </summary>
            <remarks>
            <p>
            The method may be static, if the <paramref name="definition"/>
            parameter specifies a class, rather than a
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instance, or an
            instance variable on a factory object itself configured using Dependency
            Injection.
            </p>
            <p>
            Implementation requires iterating over the static or instance methods
            with the name specified in the supplied <paramref name="definition"/>
            (the method may be overloaded) and trying to match with the parameters.
            We don't have the types attached to constructor args, so trial and error
            is the only way to go here.
            </p>
            </remarks>
            <param name="name">
            The name associated with the supplied <paramref name="definition"/>.
            </param>
            <param name="definition">
            The definition describing the instance that is to be instantiated.
            </param>
            <param name="arguments">
            Any arguments to the factory method that is to be invoked.
            </param>
            <returns>
            The result of the factory method invocation (the instance).
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.FindMethods(System.String,System.Int32,System.Boolean,System.Type)">
            <summary>
            Returns an array of all of those
            <see cref="T:System.Reflection.MethodInfo">methods</see> exposed on the
            <paramref name="searchType"/> that match the supplied criteria.
            </summary>
            <param name="methodName">
            Methods that have this name (can be in the form of a regular expression).
            </param>
            <param name="expectedArgumentCount">
            Methods that have exactly this many arguments.
            </param>
            <param name="isStatic">
            Methods that are static / instance.
            </param>
            <param name="searchType">
            The <see cref="T:System.Type"/> on which the methods (if any) are to be found.
            </param>
            <returns>
            An array of all of those
            <see cref="T:System.Reflection.MethodInfo">methods</see> exposed on the
            <paramref name="searchType"/> that match the supplied criteria.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.CreateArgumentArray(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.Factory.Config.ConstructorArgumentValues,System.Type[])">
            <summary>
            Create an array of arguments to invoke a constructor or static factory method,
            given the resolved constructor arguments values.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireConstructor(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.Object[])">
            <summary>
            Explicitly construct the object using the supplied constructor arguments.
            Constructor arguments are matched by type.
            </summary>
            <param name="name">
            The name of the object to autowire by type.
            </param>
            <param name="definition">
            The object definition to update through autowiring.
            </param>
            <param name="args">Array of constructor argument values.</param>
            <returns>
            An <see cref="T:YCH.Objects.IObjectWrapper"/> for the new instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireConstructor(System.String,YCH.Objects.Factory.Support.RootObjectDefinition)">
            <summary>
            "autowire constructor" (with constructor arguments by type) behaviour.
            </summary>
            <remarks>Passes an empty collection of constructor argument values
            to overloaded method.
            </remarks>
            <param name="name">
            The name of the object to autowire by type.
            </param>
            <param name="definition">
            The object definition to update through autowiring.
            </param>
            <returns>
            An <see cref="T:YCH.Objects.IObjectWrapper"/> for the new instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireConstructor(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.Factory.Config.ConstructorArgumentValues)">
            <summary>
            "autowire constructor" (with constructor arguments by type) behaviour.
            </summary>
            <remarks>
            <p>
            Also applied if explicit constructor argument values are specified,
            matching all remaining arguments with objects from the object factory.
            </p>
            <p>
            This corresponds to constructor injection: in this mode, a YCH.NET
            object factory is able to host components that expect constructor-based
            dependency resolution.
            </p>
            </remarks>
            <param name="name">
            The name of the object to autowire by type.
            </param>
            <param name="definition">
            The object definition to update through autowiring.
            </param>
            <param name="argumentValues">
            The collection on constructor argument values.
            </param>
            <returns>
            An <see cref="T:YCH.Objects.IObjectWrapper"/> for the new instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ResolveConstructorArguments(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,YCH.Objects.Factory.Config.ConstructorArgumentValues)">
            <summary>
            Resolves the <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            of the supplied <paramref name="definition"/>.
            </summary>
            <remarks>
            <p>
            'Resolve' can be taken to mean that all of the <paramref name="definition"/>s
            constructor arguments is resolved into a concrete object that can be plugged
            into one of the <paramref name="definition"/>s constructors. Runtime object
            references to other objects in this (or a parent) factory are resolved,
            type conversion is performed, etc.
            </p>
            <p>
            These resolved values are plugged into the supplied
            <paramref name="resolvedValues"/> object, because we wouldn't want to touch
            the <paramref name="definition"/>s constructor arguments in case it (or any of
            its constructor arguments) is a prototype object definition.
            </p>
            <p>
            This method is also used for handling invocations of static factory methods.
            </p>
            </remarks>
            <param name="name">
            The name of the object that is being resolved by this factory.
            </param>
            <param name="definition">
            The definition associated with the above <paramref name="name"/>.
            </param>
            <param name="resolvedValues">
            Where the resolved constructor arguments will be placed.
            </param>
            <returns>
            The minimum number of arguments that any constructor for the supplied
            <paramref name="definition"/> must have.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.DependencyCheck(System.String,YCH.Objects.Factory.Config.IConfigurableObjectDefinition,YCH.Objects.IObjectWrapper,YCH.Objects.IPropertyValues)">
            <summary>
            Perform a dependency check that all properties exposed have been set, if desired.
            </summary>
            <remarks>
            <p>
            Dependency checks can be objects (collaborating objects), simple (primitives
            and <see cref="T:System.String"/>), or all (both).
            </p>
            </remarks>
            <param name="name">
            The name of the object.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="wrapper">
            The <see cref="T:YCH.Objects.IObjectWrapper"/> wrapping the target object.
            </param>
            <param name="properties">
            The property values to be checked.
            </param>
            <exception cref="T:YCH.Objects.Factory.UnsatisfiedDependencyException">
            If all of the checked dependencies were not satisfied.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InvokeInitMethods(System.Object,System.String,YCH.Objects.Factory.Config.IConfigurableObjectDefinition)">
            <summary>
            Give an object a chance to react now all its properties are set,
            and a chance to know about its owning object factory (this object).
            </summary>
            <remarks>
            <p>
            This means checking whether the object implements
            <see cref="T:YCH.Objects.Factory.IInitializingObject"/> and  / or
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/>, and invoking the
            necessary callback(s) if it does.
            </p>
            <p>
            Custom init methods are resolved in a <b>case-insensitive</b> manner.
            </p>
            </remarks>
            <param name="target">
            The new object instance we may need to initialise.
            </param>
            <param name="name">
            The name the object has in the factory. Used for logging output.
            </param>
            <param name="definition">
            The definition of the target object instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InvokeCustomDestroyMethod(System.String,System.Object,System.String)">
            <summary>
            Invoke the specified custom destroy method on the given object.
            </summary>
            <remarks>
            <p>
            This implementation invokes a no-arg method if found, else checking
            for a method with a single boolean argument (passing in "true",
            assuming a "force" parameter), else logging an error.
            </p>
            <p>
            Can be overridden in subclasses for custom resolution of destroy
            methods with arguments.
            </p>
            <p>
            Custom destroy methods are resolved in a <b>case-insensitive</b> manner.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.DestroyObject(System.String,System.Object)">
            <summary>
            Destroy the target object.
            </summary>
            <remarks>
            <p>
            Must destroy objects that depend on the given object before the object itself.
            Should not throw any exceptions.
            </p>
            </remarks>
            <param name="name">
            The name of the object.
            </param>
            <param name="target">
            The target object instance to destroyed.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.DestroyDependantObjects(System.String)">
            <summary>
            Destroys all of the objects registered as dependant on the 
            object (definition) identified by the supplied <paramref name="name"/>. 
            </summary>
            <param name="name">
            The name of the root object (definition) that is itself being destroyed.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ResolveValueIfNecessary(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.String,System.Object)">
            <summary>
            Given a property value, return a value, resolving any references to other
            objects in the factory if necessary.
            </summary>
            <remarks>
            <p>
            The value could be :
            <list type="bullet">
            <item>
            <p>
            An <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>,
            which leads to the creation of a corresponding new object instance.
            Singleton flags and names of such "inner objects" are always ignored: inner objects
            are anonymous prototypes.
            </p>
            </item>
            <item>
            <p>
            A <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>, which must
            be resolved.
            </p>
            </item>
            <item>
            <p>
            An <see cref="T:YCH.Objects.Factory.Support.IManagedCollection"/>. This is a
            special placeholder collection that may contain
            <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>s or
            collections that will need to be resolved.
            </p>
            </item>
            <item>
            <p>
            An ordinary object or <see langword="null"/>, in which case it's left alone.
            </p>
            </item>
            </list>
            </p>
            </remarks>
            <param name="name">
            The name of the object that is having the value of one of its properties resolved.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="argumentName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="argumentValue">
            The value of the property that is being resolved.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ResolveInnerObjectDefinition(System.String,System.String,System.String,YCH.Objects.Factory.Config.IObjectDefinition,System.Boolean)">
            <summary>
            Resolves an inner object definition.
            </summary>
            <param name="name">
            The name of the object that surrounds this inner object definition.
            </param>
            <param name="innerObjectName">
            The name of the inner object definition... note: this is a synthetic
            name assigned by the factory (since it makes no sense for inner object
            definitions to have names).
            </param>
            <param name="argumentName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="definition">
            The definition of the inner object that is to be resolved.
            </param>
            <param name="singletonOwner">
            <see langword="true"/> if the owner of the property is a singleton.
            </param>
            <returns>
            The resolved object as defined by the inner object definition.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ResolveReference(YCH.Objects.Factory.Config.IConfigurableObjectDefinition,System.String,System.String,YCH.Objects.Factory.Config.RuntimeObjectReference)">
            <summary>
            Resolve a reference to another object in the factory.
            </summary>
            <param name="name">
            The name of the object that is having the value of one of its properties resolved.
            </param>
            <param name="definition">
            The definition of the named object.
            </param>
            <param name="argumentName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="reference">
            The runtime reference containing the value of the property.
            </param>
            <returns>A reference to another object in the factory.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.FindMatchingObjects(System.Type)">
            <summary>
            Find object instances that match the required <see cref="T:System.Type"/>.
            </summary>
            <remarks>
            <p>
            Called by autowiring. If a subclass cannot obtain information about object
            names by <see cref="T:System.Type"/>, a corresponding exception should be thrown.
            </p>
            </remarks>
            <param name="requiredType">
            The <see cref="T:System.Type"/> of the objects to look up.
            </param>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> of object names and object
            instances that match the required <see cref="T:System.Type"/>, or
            <see langword="null"/> if none are found.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.GetDependingObjectNames(System.String)">
            <summary>
            Return the names of the objects that depend on the given object.
            Called by DestroyObject, to be able to destroy depending objects first.
            </summary>
            <param name="name">
            The name of the object to find depending objects for.
            </param>
            <returns>
            The array of names of depending objects, or the empty string array if none.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ConfigureObject(System.Object,System.String)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance
            using the named object definition.
            </summary>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <param name="name">
            The name of the object definition expressing the dependencies that are to
            be injected into the supplied <parameref name="target"/> instance.
            </param>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Autowire(System.Type,YCH.Objects.Factory.Config.AutoWiringMode,System.Boolean)">
            <summary>
            Create a new object instance of the given class with the specified
            autowire strategy.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="autowireMode">
            The desired autowiring mode.
            </param>
            <param name="dependencyCheck">
            Whether to perform a dependency check for objects (not applicable to
            autowiring a constructor, thus ignored there).
            </param>
            <returns>The new object instance.</returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the wiring fails.
            </exception>
            <seealso cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.AutowireObjectProperties(System.Object,YCH.Objects.Factory.Config.AutoWiringMode,System.Boolean)">
            <summary>
            Autowire the object properties of the given object instance by name or
            <see cref="T:System.Type"/>.
            </summary>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="autowireMode">
            The desired autowiring mode.
            </param>
            <param name="dependencyCheck">
            Whether to perform a dependency check for the object.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the wiring fails.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="autowireMode"/> is not one of the
            <seealso cref="F:YCH.Objects.Factory.Config.AutoWiringMode.ByName"/> or
            <seealso cref="F:YCH.Objects.Factory.Config.AutoWiringMode.ByType"/>
            values.
            </exception>
            <seealso cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ApplyObjectPostProcessorsBeforeInitialization(System.Object,System.String)">
            <summary>
            Apply <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            to the given existing object instance, invoking their
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
            methods.
            </summary>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any post-processing failed.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessBeforeInitialization(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ApplyObjectPostProcessorsAfterInitialization(System.Object,System.String)">
            <summary>
            Apply <see cref="T:YCH.Objects.Factory.Config.IObjectPostProcessor"/>s
            to the given existing object instance, invoking their
            <see cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
            methods.
            </summary>
            <param name="instance">
            The existing object instance.
            </param>
            <param name="name">
            The name of the object.
            </param>
            <returns>
            The object instance to use, either the original or a wrapped one.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any post-processing failed.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IObjectPostProcessor.PostProcessAfterInitialization(System.Object,System.String)"/>
        </member>
        <member name="F:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory._disposableInnerObjects">
            <summary>
            Set that holds all inner objects created by this factory that implement the IDisposable
            interface, to be destroyed on call to Dispose.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiationStrategy">
            <summary>
            The <see cref="T:YCH.Objects.Factory.Support.IInstantiationStrategy"/>
            implementation to be used to instantiate managed objects.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AbstractMethodReplacer">
            <summary>
            An <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            implementation that provides some convenience support for
            derived classes.
            </summary>
            <remarks>
            <p>
            This class is reserved for internal use within the framework; it is
            not intended to be used by application developers using YCH.NET.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: AbstractMethodReplacer.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.IMethodReplacer">
            <summary>
            Permits the (re)implementation of an arbitrary method on a YCH.NET
            IoC container managed object.
            </summary>
            <remarks>
            <p>
            Encapsulates the notion of the Method-Injection form of Dependency
            Injection.
            </p>
            <p>
            Methods that are dependency injected with implementations of this
            interface may be (but need not be) <see lang="abstract"/>, in which
            case the container will create a concrete subclass of the
            <see lang="abstract"/> class prior to instantiation.
            </p>
            <p>
            Do <b>not</b> use this mechanism as a means of AOP. See the reference
            manual for examples of appropriate usages of this interface.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IMethodReplacer.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Reimplement the supplied <paramref name="method"/>.
            </summary>
            <param name="target">
            The instance whose <paramref name="method"/> is to be
            (re)implemented.
            </param>
            <param name="method">
            The method that is to be (re)implemented.
            </param>
            <param name="arguments">The target method's arguments.</param>
            <returns>
            The result of the (re)implementation of the method call.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractMethodReplacer.#ctor(YCH.Objects.Factory.Config.IObjectDefinition,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:System.ArgumentNullException"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see lang="abstract"/> class, and as such has no
            publicly visible constructors.
            </p>
            </remarks>
            <param name="objectDefinition">
            The object definition that is the target of the method replacement.
            </param>
            <param name="objectFactory">
            The enclosing IoC container with which the above
            <paramref name="objectDefinition"/> is associated.
            </param>
            <exception cref="T:YCH.Objects.Factory.Support.AbstractMethodReplacer">
            If either of the supplied arguments is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Is <see lang="abstract"/>; derived classes must supply an implementation.
            </summary>
            <param name="target">
            The instance whose <paramref name="method"/> is to be
            (re)implemented.
            </param>
            <param name="method">
            The method that is to be (re)implemented.
            </param>
            <param name="arguments">The target method's arguments.</param>
            <returns>The result of the object lookup.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractMethodReplacer.GetOverride(System.Reflection.MethodInfo)">
            <summary>
            Helper method for subclasses to retrieve the appropriate
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/> for the
            supplied <paramref name="method"/>.  
            </summary>
            <param name="method">
            The <see cref="T:System.Reflection.MethodInfo"/> to use to retrieve
            the appropriate
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>.
            </param>
            <returns>
            The appropriate
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractMethodReplacer.GetObject(System.String)">
            <summary>
            Helper method for subclasses to lookup an object from an enclosing
            IoC container.
            </summary>
            <param name="objectName">
            The name of the object that is to be looked up.
            </param>
            <returns>
            The named object.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AbstractObjectDefinition">
            <summary>
            Common base class for object definitions, factoring out common
            functionality from
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> and
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: AbstractObjectDefinition.cs,v 1.21 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinition"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.#ctor(YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinition"/>
            class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.#ctor(YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinition"/>
            class.
            </summary>
            <param name="other">
            The object definition used to initialise the member fields of this
            instance.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.Validate">
            <summary>
            Validate this object definition.
            </summary>
            <exception cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException">
            In the case of a validation failure.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.ValidateMethodOverride(YCH.Objects.Factory.Support.MethodOverride)">
            <summary>
            Validate the supplied <paramref name="methodOverride"/>.
            </summary>
            <param name="methodOverride">
            The <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>
            to be validated.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.OverrideFrom(YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Override settings in this object definition from the supplied
            <paramref name="other"/> object definition.
            </summary>
            <param name="other">
            The object definition used to override the member fields of this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinition.ToString">
            <summary>
            Returns a <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>. 
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>. 
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.PropertyValues">
            <summary>
            The property values that are to be applied to the object
            upon creation.
            </summary>
            <remarks>
            <p>
            Setting the value of this property to <see langword="null"/>
            will merely result in a new (and empty)
            <see cref="T:YCH.Objects.MutablePropertyValues"/>
            collection being assigned to the property value.
            </p>
            </remarks>
            <value>
            The property values (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.HasMethodOverrides">
            <summary>
            Does this definition have any
            <see cref="T:YCH.Objects.Factory.Support.MethodOverrides"/>?
            </summary>
            <value>
            <see langword="true"/> if this definition has at least one
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ConstructorArgumentValues">
            <summary>
            The constructor argument values for this object.
            </summary>
            <remarks>
            <p>
            Setting the value of this property to <see langword="null"/>
            will merely result in a new (and empty)
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            collection being assigned.
            </p>
            </remarks>
            <value>
            The constructor argument values (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.EventHandlerValues">
            <summary>
            The event handler values for this object.
            </summary>
            <remarks>
            <p>
            Setting the value of this property to <see langword="null"/>
            will merely result in a new (and empty)
            <see cref="T:YCH.Objects.Factory.Config.EventValues"/>
            collection being assigned.
            </p>
            </remarks>
            <value>
            The event handler values (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.MethodOverrides">
            <summary>
            The method overrides (if any) for this object.
            </summary>
            <remarks>
            <p>
            Setting the value of this property to <see langword="null"/>
            will merely result in a new (and empty)
            <see cref="T:YCH.Objects.Factory.Support.MethodOverrides"/>
            collection being assigned to the property value.
            </p>
            </remarks>
            <value>
            The method overrides (if any) for this object; may be an
            empty collection but is guaranteed not to be
            <see langword="null"/>.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.IsSingleton">
            <summary>
            Is this definition a <b>singleton</b>, with
            a single, shared instance returned on all calls to an enclosing
            container (typically an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> or
            <see cref="T:YCH.Context.IApplicationContext"/>).
            </summary>
            <remarks>
            <p>
            If <see langword="false"/>, an object factory will apply the
            <b>prototype</b> design pattern, with each caller requesting an
            instance getting an independent instance. How this is defined
            will depend on the object factory implementation. <b>singletons</b>
            are the commoner type.
            </p>
            </remarks>
            <seealso cref="T:YCH.Objects.Factory.IObjectFactory"/>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.IsLazyInit">
            <summary>
            Is this object lazily initialized?</summary>
            <remarks>
            <p>
            Only applicable to a singleton object.
            </p>
            <p>
            If <see langword="false"/>, it will get instantiated on startup
            by object factories that perform eager initialization of
            singletons.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.IsAbstract">
            <summary>
            Is this object definition "abstract", i.e. not meant to be
            instantiated itself but rather just serving as a parent for concrete
            child object definitions.
            </summary>
            <value>
            <see langword="true"/> if this object definition is "abstract".
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
            <value>
            A resolved object <see cref="T:System.Type"/>.
            </value>
            <exception cref="T:System.ApplicationException">
            If the <see cref="T:System.Type"/> of the object definition is not a
            resolved <see cref="T:System.Type"/> or <see langword="null"/>.
            </exception>
            <seealso cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.HasObjectType"/>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.HasObjectType">
            <summary>
            Is the <see cref="T:System.Type"/> of the object definition a resolved
            <see cref="T:System.Type"/>?
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectTypeName">
            <summary>
            Returns the <see cref="P:System.Type.FullName"/> of the
            <see cref="T:System.Type"/> of the object definition (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ResourceDescription">
            <summary>
            A description of the resource that this object definition
            came from (for the purpose of showing context in case of errors).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.AutowireMode">
            <summary>
            The autowire mode as specified in the object definition.
            </summary>
            <remarks>
            <p>
            This determines whether any automagical detection and setting of
            object references will happen. The default is
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.No"/>,
            which means that no autowiring will be performed.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ResolvedAutowireMode">
            <summary>
            Gets the resolved autowire mode.
            </summary>
            <remarks>
            <p>
            This resolves
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.AutoDetect"/>
            to one of 
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.Constructor"/>
            or
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.ByType"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DependencyCheck">
            <summary>
            The dependency checking mode.
            </summary>
            <remarks>
            <p>
            The default is
            <see cref="F:YCH.Objects.Factory.Support.DependencyCheckingMode.None"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DependsOn">
            <summary>
            The object names that this object depends on.
            </summary>
            <remarks>
            <p>
            The object factory will guarantee that these objects get initialized
            before this object definition.
            </p>
            <note>
            Dependencies are normally expressed through object properties
            or constructor arguments. This property should just be necessary for
            other kinds of dependencies such as statics (*ugh*) or database
            preparation on startup.
            </note>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.InitMethodName">
            <summary>
            The name of the initializer method.
            </summary>
            <remarks>
            <p>
            The default value is the <see cref="F:System.String.Empty"/> constant,
            in which case there is no initializer method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DestroyMethodName">
            <summary>
            Return the name of the destroy method.
            </summary>
            <remarks>
            <p>
            The default value is the <see cref="F:System.String.Empty"/> constant,
            in which case there is no destroy method.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.FactoryMethodName">
            <summary>
            The name of the factory method to use (if any).
            </summary>
            <remarks>
            <p>
            This method will be invoked with constructor arguments, or with no
            arguments if none are specified. The <see langword="static"/>
            method will be invoked on the specified
            <see cref="P:YCH.Objects.Factory.Config.IObjectDefinition.ObjectType"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.FactoryObjectName">
            <summary>
            The name of the factory object to use (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.HasConstructorArgumentValues">
            <summary>
            Does this object definition have any constructor argument values?
            </summary>
            <value>
            <see langword="true"/> if his object definition has at least one
            element in it's
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ConstructorArgumentValues"/>
            property.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader">
            <summary>
            Abstract base class for object definition readers.
            </summary>
            <remarks>
            <p>
            Provides common properties like the object registry to work on.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: AbstractObjectDefinitionReader.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.IObjectDefinitionReader">
            <summary>
            Simple interface for object definition readers.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans</author>
            <version>$Id: IObjectDefinitionReader.cs,v 1.4 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionReader.LoadObjectDefinitions(YCH.Core.IO.IResource)">
            <summary>
            Load object definitions from the supplied <paramref name="resource"/>.
            </summary>
            <param name="resource">
            The resource for the object definitions that are to be loaded.
            </param>
            <returns>
            The number of object definitions that were loaded.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Support.IObjectDefinitionReader.Registry">
            <summary>
            Gets the
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.IObjectDefinitionReader.Domain">
            <summary>
            The <see cref="T:System.AppDomain"/> against which any class names
            will be resolved into <see cref="T:System.Type"/> instances.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.log">
            <summary>
            The shared <see cref="T:log4net.ILog"/> instance for this class (and derived classes).
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader"/>
            class.
            </summary>
            <param name="registry">
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry,System.AppDomain)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader"/>
            class.
            </summary>
            <param name="registry">
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </param>
            <param name="domain">
            The <see cref="T:System.AppDomain"/> against which any class names
            will be resolved into <see cref="T:System.Type"/> instances.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.LoadObjectDefinitions(YCH.Core.IO.IResource)">
            <summary>
            Load object definitions from the supplied <paramref name="resource"/>.
            </summary>
            <param name="resource">
            The resource for the object definitions that are to be loaded.
            </param>
            <returns>
            The number of object definitions that were loaded.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.Registry">
            <summary>
            Gets the
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.AbstractObjectDefinitionReader.Domain">
            <summary>
            The <see cref="T:System.AppDomain"/> against which any class names
            will be resolved into <see cref="T:System.Type"/> instances.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.AutowireUtils">
            <summary>
            Utility class that contains various methods useful for the implementation of
            autowire-capable object factories.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: AutowireUtils.cs,v 1.5 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AutowireUtils.#ctor">
            <summary>
            Creates a new instance of the AutowireUtils class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly
            visible constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AutowireUtils.GetConstructors(YCH.Objects.Factory.Config.IObjectDefinition,System.Int32)">
            <summary>
            Gets those <see cref="T:System.Reflection.ConstructorInfo"/>s
            that are applicable for autowiring the supplied <paramref name="definition"/>.
            </summary>
            <param name="definition">
            The <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>
            (definition) that is being autowired by constructor.
            </param>
            <param name="minimumArgumentCount">
            The absolute minimum number of arguments that any returned constructor
            must have. If this parameter is equal to zero (0), then all constructors
            are valid (regardless of their argument count), including any default
            constructor.
            </param>
            <returns>
            Those <see cref="T:System.Reflection.ConstructorInfo"/>s
            that are applicable for autowiring the supplied <paramref name="definition"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AutowireUtils.GetTypeDifferenceWeight(System.Reflection.ParameterInfo[],System.Object[])">
            <summary>
            Determine a weight that represents the class hierarchy difference between types and
            arguments.
            </summary>
            <remarks>
            <p>
            A direct match, i.e. type MyInteger -&gt; arg of class MyInteger, does not increase
            the result - all direct matches means weight zero (0). A match between the argument type
            <see cref="T:System.Object"/> and a MyInteger instance argument would increase the weight by
            1, due to the superclass (<see cref="T:System.Object"/>) being one (1) steps up in the
            class hierarchy being the last one that still matches the required type.
            </p>
            <p>
            Therefore, with an argument of type <see cref="T:System.Collections.Hashtable"/>, a
            constructor taking a <see cref="T:System.Collections.Hashtable"/> argument would be
            preferred to a constructor taking an <see cref="T:System.Collections.IDictionary"/> argument
            which would be preferred to a constructor taking an
            <see cref="T:System.Collections.ICollection"/> argument which would in turn be preferred
            to a constructor taking an <see cref="T:System.Object"/> argument.
            </p>
            <p>
            All argument weights get accumulated.
            </p>
            </remarks>
            <param name="argTypes">
            The argument <see cref="T:System.Type"/>s to match.
            </param>
            <param name="args">The arguments to match.</param>
            <returns>The accumulated weight for all arguments.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.AutowireUtils.SortConstructors(System.Reflection.ConstructorInfo[])">
            <summary>
            Sorts the supplied <paramref name="constructors"/>, preferring
            public constructors and "greedy" ones (that have lots of arguments).
            </summary>
            <remarks>
            <p>
            The result will contain public constructors first, with a decreasing number
            of arguments, then non-public constructors, again with a decreasing number
            of arguments.
            </p>
            </remarks>
            <param name="constructors">
            The <see cref="T:System.Reflection.ConstructorInfo"/> array to be sorted.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ChildObjectDefinition">
            <summary>
            Object definition for definitions that inherit settings from their
            parent (object definition).
            </summary>
            <remarks>
            <p>
            Will use the <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType"/>
            of the parent object definition if none is specified, but can also
            override it. In the latter case, the child's
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType"/>
            must be compatible with the parent, i.e. accept the parent's property values
            and constructor argument values (if any).
            </p>
            <p>
            A <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/> will
            inherit all of the <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>,
            <see cref="T:YCH.Objects.IPropertyValues"/>, and
            <see cref="T:YCH.Objects.Factory.Config.EventValues"/> from it's parent
            object definition, with the option to add new values. If the
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.InitMethodName"/>,
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DestroyMethodName"/>,
            and / or <see langword="static"/>
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.FactoryMethodName"/>
            properties are specified, they will override the corresponding parent settings.
            </p>
            <p>
            The remaining settings will <i>always</i> be taken from the child definition:
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DependsOn"/>,
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.AutowireMode"/>,
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.DependencyCheck"/>,
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.IsSingleton"/>,
            and
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.IsLazyInit"/>
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <seealso cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            class.
            </summary>
            <param name="parentName">
            The name of the parent object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.#ctor(System.String,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            class.
            </summary>
            <param name="parentName">
            The name of the parent object.
            </param>
            <param name="properties">
            The additional property values (if any) of the child.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.#ctor(System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            class.
            </summary>
            <param name="parentName">
            The name of the parent object.
            </param>
            <param name="arguments">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be applied to a new instance of the object.
            </param>
            <param name="properties">
            The additional property values (if any) of the child.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.#ctor(System.String,System.Type,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            class.
            </summary>
            <param name="parentName">
            The name of the parent object.
            </param>
            <param name="type">
            The class of the object to instantiate.
            </param>
            <param name="arguments">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be applied to a new instance of the object.
            </param>
            <param name="properties">
            The additional property values (if any) of the child.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.#ctor(System.String,System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            class.
            </summary>
            <param name="parentName">
            The name of the parent object.
            </param>
            <param name="typeName">
            The <see cref="P:System.Type.AssemblyQualifiedName"/> of the object to
            instantiate.
            </param>
            <param name="arguments">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be applied to a new instance of the object.
            </param>
            <param name="properties">
            The additional property values (if any) of the child.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.Validate">
            <summary>
            Validate this object definition.
            </summary>
            <remarks>
            <p>
            A common cause of validation failures is a missing value for the
            <see cref="P:YCH.Objects.Factory.Support.ChildObjectDefinition.ParentName"/>
            property; <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/> by
            their very nature <b>require</b> that the
            <see cref="P:YCH.Objects.Factory.Support.ChildObjectDefinition.ParentName"/>
            be set.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException">
            In the case of a validation failure.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ChildObjectDefinition.ToString">
            <summary>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ChildObjectDefinition.ParentName">
            <summary>
            The name of the parent object definition.
            </summary>
            <remarks>
            <p>
            This value is <b>required</b>.
            </p>
            </remarks>
            <value>
            The name of the parent object definition.
            </value>
        </member>
        <member name="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory">
            <summary>
            Concrete implementation of the
            <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/> and
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            interfaces.
            </summary>
            <remarks>
            <p>
            This class is a full-fledged object factory based on object definitions
            that is usable straight out of the box.
            </p>
            <p>
            Can be used as an object factory in and of itself, or as a superclass
            for custom object factory implementations. Note that readers for
            specific object definition formats are typically implemented separately
            rather than as object factory subclasses.
            </p>
            <p>
            For an alternative implementation of the
            <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/> interface,
            have a look at the
            <see cref="T:YCH.Objects.Factory.Support.StaticListableObjectFactory"/>
            class, which manages existing object instances rather than creating new
            ones based on object definitions.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <seealso cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/>
            <version>$Id: DefaultListableObjectFactory.cs,v 1.34 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry">
            <summary>
            Interface for registries that hold object definitions, i.e. 
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            and
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
            instances.
            </summary>
            <remarks>
            <p>
            Typically implemented by object factories that work with the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectDefinition"/>
            hierarchy internally.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.GetObjectDefinitionNames">
            <summary>
            Return the names of all objects defined in this registry.
            </summary>
            <returns>
            The names of all objects defined in this registry, or an empty array
            if none defined
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.ContainsObjectDefinition(System.String)">
            <summary>
            Check if this registry contains a object definition with the given name.
            </summary>
            <param name="name">
            The name of the object to look for.
            </param>
            <returns>
            True if this object factory contains an object definition with the
            given name.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.GetObjectDefinition(System.String)">
            <summary>
            Returns the
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>
            for the given object name.
            </summary>
            <param name="name">
            The name of the object to find a definition for.
            </param>
            <returns>
            The <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for
            the given name (never null).
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If the object definition cannot be resolved.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.RegisterObjectDefinition(System.String,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Register a new object definition with this registry.
            Must support
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            and <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>.
            </summary>
            <param name="name">
            The name of the object instance to register.
            </param>
            <param name="definition">
            The definition of the object instance to register.
            </param>
            <remarks>
            <p>
            Must support
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> and
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object definition is invalid.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.GetAliases(System.String)">
            <summary>
            Return the aliases for the given object name, if defined.
            </summary>
            <param name="name">the object name to check for aliases
            </param>
            <remarks>
            <p>
            Will ask the parent factory if the object cannot be found in this
            factory instance.
            </p>
            </remarks>
            <returns>
            The aliases, or an empty array if none.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.RegisterAlias(System.String,System.String)">
            <summary>
            Given a object name, create an alias. We typically use this method to
            support names that are illegal within XML ids (used for object names).
            </summary>
            <param name="name">
            The name of the object.
            </param>
            <param name="theAlias">
            The alias that will behave the same as the object name.
            </param>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectDefinitionStoreException">
            If the alias is already in use.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.ObjectDefinitionCount">
            <summary>
            Return the number of objects defined in the registry.
            </summary>
            <value>
            The number of objects defined in the registry.
            </value>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.#ctor(System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/> class.
            </summary>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.#ctor(YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/> class.
            </summary>
            <param name="parentFactory">The parent object factory.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.#ctor(System.Boolean,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/> class.
            </summary>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
            <param name="parentFactory">The parent object factory.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.FindMatchingObjects(System.Type)">
            <summary>
            Find object instances that match the <paramref name="requiredType"/>.
            </summary>
            <remarks>
            <p>
            Called by autowiring. If a subclass cannot obtain information about object
            names by <see cref="T:System.Type"/>, a corresponding exception should be thrown.
            </p>
            </remarks>
            <param name="requiredType">
            The type of the objects to look up.
            </param>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> of object names and object
            instances that match the <paramref name="requiredType"/>, or
            <see langword="null"/> if none is found.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetDependingObjectNames(System.String)">
            <summary>
            Return the names of the objects that depend on the given object.
            </summary>
            <remarks>
            <p>
            Called by the
            <see cref="M:YCH.Objects.Factory.Support.AbstractObjectFactory.DestroyObject(System.String,System.Object)"/>
            so that dependant objects are able to be disposed of first.
            </p>
            </remarks>
            <param name="objectName">
            The name of the object to find depending objects for.
            </param>
            <returns>
            The array of names of depending objects, or the empty string array if none.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.IsObjectTypeMatch(System.String,System.Type)">
            <summary>
            Check whether the specified object matches the supplied <paramref name="type"/>.
            </summary>
            <param name="objectName">The name of the object to check.</param>
            <param name="type">
            The <see cref="T:System.Type"/> to check for.
            </param>
            <returns>
            <see langword="true"/> if the object matches the supplied <paramref name="type"/>,
            or if the supplied <paramref name="type"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.MergeObjectDefinitions(System.String,YCH.Objects.Factory.Config.IObjectDefinition,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Merges the object definitions.
            </summary>
            <param name="name">Object definition name.</param>
            <param name="parentDefinition">The parent definition.</param>
            <param name="childDefinition">The child definition.</param>
            <returns>Merged object definition.</returns>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DefaultListableObjectFactory.allowObjectDefinitionOverriding">
            <summary>
            Whether to allow re-registration of a different definition with the
            same name.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DefaultListableObjectFactory.objectDefinitionMap">
            <summary>
            The mapping of object definition objects, keyed by object name.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DefaultListableObjectFactory.objectDefinitionNames">
            <summary>
            List of object definition names, in registration order.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.ContainsObjectDefinition(System.String)">
            <summary>
            Check if this registry contains a object definition with the given
            name.
            </summary>
            <param name="name">
            The name of the object to look for.
            </param>
            <returns>
            <see langword="true"/> if this object factory contains an object
            definition with the given name.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.ContainsObjectDefinition(System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.RegisterObjectDefinition(System.String,YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Register a new object definition with this registry.
            </summary>
            <param name="name">
            The name of the object instance to register.
            </param>
            <param name="objectDefinition">
            The definition of the object instance to register.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object definition is invalid.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.RegisterObjectDefinition(System.String,YCH.Objects.Factory.Config.IObjectDefinition)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.PreInstantiateSingletons">
            <summary>
            Ensure that all non-lazy-init singletons are instantiated, also
            considering <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <exception cref="T:YCH.Objects.ObjectsException">
            If one of the singleton objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Config.IConfigurableListableObjectFactory.PreInstantiateSingletons"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectDefinition(System.String)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>
            The registered <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>, 
            or <c>null</c>, if specified object definitions does not exist.
            </returns>
            <exception cref="T:System.ArgumentException">
            If <paramref name="name"/> is <c>null</c> or empty string.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinition(System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="includeAncestors">Whether to search parent object factories.</param>
            <returns>
            The registered <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>, 
            or <c>null</c>, if specified object definitions does not exist.
            </returns>
            <exception cref="T:System.ArgumentException">
            If <paramref name="name"/> is <c>null</c> or empty string.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinition(System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectDefinitionNames">
            <summary>
            Return the names of all objects defined in this factory.
            </summary>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinitionNames"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectDefinitionNames(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinitionNames"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectNamesForType(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectsOfType(System.Type)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses).
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any of the objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultListableObjectFactory.DoGetObjectNamesForType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses).
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            An <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If any of the objects could not be created.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="P:YCH.Objects.Factory.Support.DefaultListableObjectFactory.AllowObjectDefinitionOverriding">
            <summary>
            Should object definitions registered under the same name as an
            existing object definition be allowed?
            </summary>
            <remarks>
            <p>
            If <see langword="true"/>, then the new object definition will
            replace (override) the existing object definition. If
            <see langword="false"/>, an exception will be thrown when
            an attempt is made to register an object definition under the same
            name as an already existing object definition.
            </p>
            <p>
            The default is <see langword="true"/>.
            </p>
            </remarks>
            <value>
            <see langword="true"/> is the registration of an object definition
            under the same name as an existing object definition is allowed.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.DefaultListableObjectFactory.ObjectDefinitionCount">
            <summary>
            Return the number of objects defined in this registry.
            </summary>
            <value>
            The number of objects defined in this registry.
            </value>
            <seealso cref="P:YCH.Objects.Factory.Support.IObjectDefinitionRegistry.ObjectDefinitionCount"/>
        </member>
        <member name="T:YCH.Objects.Factory.Support.DefaultObjectDefinitionFactory">
            <summary>
            Default implementation of the
            <see cref="T:YCH.Objects.Factory.IObjectDefinitionFactory"/>
            interface.
            </summary>
            <remarks>
            <p>
            Does <b>not</b> support per <see cref="T:System.AppDomain"/>
            <see cref="T:System.Type"/> loading.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: DefaultObjectDefinitionFactory.cs,v 1.5 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.IObjectDefinitionFactory">
            <summary>
            Central interface for factories that can create
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition"/>
            instances.
            </summary>
            <remarks>
            <p>
            Allows for replaceable object definition factories using the Strategy
            pattern.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: IObjectDefinitionFactory.cs,v 1.5 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.IObjectDefinitionFactory.CreateObjectDefinition(System.String,System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues,System.AppDomain)">
            <summary>
            Factory style method for getting concrete
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition"/>
            instances.
            </summary>
            <param name="typeName">
            The <see cref="T:System.Type"/> of the defined object.
            </param>
            <param name="parent">The name of the parent object definition (if any).</param>
            <param name="arguments">The constructor arguments (if any).</param>
            <param name="properties">The property values (if any).</param>
            <param name="domain">
            The <see cref="T:System.AppDomain"/> against which any class names
            will be resolved into <see cref="T:System.Type"/> instances.
            </param>
            <returns>
            An
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition"/>
            instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DefaultObjectDefinitionFactory.CreateObjectDefinition(System.String,System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues,System.AppDomain)">
            <summary>
            Factory style method for getting concrete
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition"/>
            instances.
            </summary>
            <remarks>
            <p>
            Does <b>not</b> support per <see cref="T:System.AppDomain"/>
            <see cref="T:System.Type"/> loading (the <paramref name="domain"/>
            argument is currently ignored).
            </p>
            </remarks>
            <param name="typeName">
            The <see cref="T:System.Type"/> of the defined object.
            </param>
            <param name="parent">
            The name of the parent object definition (if any).
            </param>
            <param name="arguments">The constructor arguments (if any).</param>
            <param name="properties">The property values (if any).</param>
            <param name="domain">
            The <see cref="T:System.AppDomain"/> against which any class names
            will be resolved into <see cref="T:System.Type"/> instances.
            </param>
            <returns>
            An
            <see cref="T:YCH.Objects.Factory.Config.IConfigurableObjectDefinition"/>
            instance.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.DelegatingMethodReplacer">
            <summary>
            An <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            implementation that delegates to an
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/> that is
            obtained as the result of a lookup in an associated IoC container.
            </summary>
            <remarks>
            <p>
            This class is reserved for internal use within the framework; it is
            not intended to be used by application developers using YCH.NET.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: DelegatingMethodReplacer.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DelegatingMethodReplacer.#ctor(YCH.Objects.Factory.Config.IObjectDefinition,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the
            <see cref="T:System.ArgumentNullException"/>
            class.
            </summary>
            <param name="objectDefinition">
            The object definition that is the target of the method replacement.
            </param>
            <param name="objectFactory">
            The enclosing IoC container with which the above
            <paramref name="objectDefinition"/> is associated.
            </param>
            <exception cref="T:YCH.Objects.Factory.Support.DelegatingMethodReplacer">
            If either of the supplied arguments is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.DelegatingMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Reimplements the supplied <paramref name="method"/> by delegating to
            another <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            looked up in an enclosing IoC container.
            </summary>
            <param name="target">
            The instance whose <paramref name="method"/> is to be
            (re)implemented.
            </param>
            <param name="method">
            The method that is to be (re)implemented.
            </param>
            <param name="arguments">The target method's arguments.</param>
            <returns>
            The result of the delegated call to the looked up
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.DependencyCheckingMode">
            <summary>
            The various modes of dependency checking.
            </summary>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DependencyCheckingMode.None">
            <summary>
            DO not do any dependency checking.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DependencyCheckingMode.Objects">
            <summary>
            Check object references.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DependencyCheckingMode.Simple">
            <summary>
            Just check primitive (string, int, etc) values.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.DependencyCheckingMode.All">
            <summary>
            Check everything.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.IInstantiationStrategy">
            <summary>
            Responsible for creating instances corresponding to a
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: IInstantiationStrategy.cs,v 1.6 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.ConstructorInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="constructor">
            The <see cref="T:System.Reflection.ConstructorInfo"/> to be used to instantiate
            the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="constructor"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="factoryMethod">
            The <see cref="T:System.Reflection.MethodInfo"/> to be used to get the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="factoryMethod"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.IManagedCollection">
            <summary>
            Denotes a special placeholder collection that may contain
            <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>s or
            other placeholder objects that will need to be resolved.
            </summary>
            <remarks>
            <p>
            <c>'A special placeholder collection'</c> means that the elements of this
            collection can be placeholders for objects that will be resolved later by
            a YCH.NET IoC container, i.e. the elements themselves will be
            resolved at runtime by the enclosing IoC container.
            </p>
            <p>
            The core YCH.NET library already provides three implementations of this interface
            straight out of the box; they are...
            </p>
            <list type="bullet">
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.Support.ManagedList"/>.
            </description>
            </item>
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.Support.ManagedDictionary"/>.
            </description>
            </item>
            <item>
            <description>
            <see cref="T:YCH.Objects.Factory.Support.ManagedSet"/>.
            </description>
            </item>
            </list>
            <p>
            If you have a custom collection class (i.e. a class that either implements the
            <see cref="T:System.Collections.ICollection"/> directly or derives from a class that does)
            that you would like to expose as a special placeholder collection (i.e. one that can
            have <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>s as elements
            that will be resolved at runtime by an appropriate YCH.NET IoC container, just
            implement this interface.
            </p>
            </remarks>
            <example>
            <p>
            Lets say one has a <c>Bag</c> class (i.e. a collection that supports bag style semantics).
            </p>
            <code language="C#">
            using System;
            
            using YCH.Objects.Factory.Support;
            
            namespace MyNamespace
            {
            	public sealed class Bag : ICollection
            	{
            		// ICollection implementation elided for clarity...
            		
            		public void Add(object o)
            		{
            			// implementation elided for clarity...
            		}
            	}
            	
            	public class ManagedBag : Bag, IManagedCollection
            	{
            		public ICollection Resolve(
            			string objectName, RootObjectDefinition definition,
            			string propertyName, ManagedCollectionElementResolver resolver)
            		{
            			Bag newBag = new Bag();
            			string elementName = propertyName + "[bag-element]";
            			foreach(object element in this)
            			{
            				object resolvedElement = resolver(objectName, definition, elementName, element);
            				newBag.Add(resolvedElement);
            			}
            			return newBag;
            		}
            	}
            }
            </code>
            </example>
            <author>Rick Evans</author>
            <version>$Id: IManagedCollection.cs,v 1.3 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.IManagedCollection.Resolve(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.Support.ManagedCollectionElementResolver)">
            <summary>
            Resolves this managed collection at runtime.
            </summary>
            <param name="objectName">
            The name of the top level object that is having the value of one of it's
            collection properties resolved.
            </param>
            <param name="definition">
            The definition of the named top level object.
            </param>
            <param name="propertyName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="resolver">
            The callback that will actually do the donkey work of resolving
            this managed collection.
            </param>
            <returns>A fully resolved collection.</returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ManagedCollectionElementResolver">
            <summary>
            Resolves a single element value of a managed collection.
            </summary>
            <remarks>
            <p>
            If the <paramref name="element"/> does not need to be resolved or
            converted to an appropriate <see cref="T:System.Type"/>, the
            <paramref name="element"/> will be returned as-is.
            </p>
            </remarks>
            <param name="name">
            The name of the top level object that is having the value of one of it's
            collection properties resolved.
            </param>
            <param name="definition">
            The definition of the named top level object.
            </param>
            <param name="argumentName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="element">
            That element of a managed collection that may need to be resolved
            to a concrete value.
            </param>
            <returns>A fully resolved element.</returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.LookupMethodOverride">
            <summary>
            Represents an override of a method that looks up an object in the same IoC context.
            </summary>
            <remarks>
            <p>
            Methods eligible for lookup override must not have arguments.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: LookupMethodOverride.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.MethodOverride">
            <summary>
            Represents the override of a method on a managed object by the IoC container.
            </summary>
            <remarks>
            <p>
            Note that the override mechanism is <i>not</i> intended as a generic means of
            inserting crosscutting code: use AOP for that.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: MethodOverride.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverride.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
            <param name="methodName">
            The name of the method that is to be overridden.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="methodName"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverride.Matches(System.Reflection.MethodInfo)">
            <summary>
            Does this <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>
            match the supplied <paramref name="method"/>?
            </summary>
            <remarks>
            <p>
            By 'match' one means does this particular
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>
            instance apply to the supplied <paramref name="method"/>?
            </p>
            <p>
            This allows for argument list checking as well as method name checking.
            </p>
            </remarks>
            <param name="method">The method to be checked.</param>
            <returns>
            <see lang="true"/> if this override matches the supplied
            <paramref name="method"/>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.MethodOverride.MethodName">
            <summary>
            The name of the method that is to be overridden.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.MethodOverride.IsOverloaded">
            <summary>
            Is the method that is ot be injected
            (<see cref="P:YCH.Objects.Factory.Support.MethodOverride.MethodName"/>)
            to be considered as overloaded?
            </summary>
            <remarks>
            <p>
            If <see lang="true"/> (the defaukt), then argument type matching
            will be performed (because one would not want to override the wrong
            method).
            </p>
            <p>
            Setting the value of this property to <see lang="false"/> can be used
            to optimize runtime performance (ever so slightly).
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.LookupMethodOverride.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.LookupMethodOverride"/> class.
            </summary>
            <remarks>
            <p>
            Methods eligible for lookup override must not have arguments.
            </p>
            </remarks>
            <param name="methodName">
            The name of the method that is to be overridden.
            </param>
            <param name="objectName">
            The name of the object in the current IoC context that the
            dependency injected method must return.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied arguments is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.LookupMethodOverride.Matches(System.Reflection.MethodInfo)">
            <summary>
            Does this <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>
            match the supplied <paramref name="method"/>?
            </summary>
            <param name="method">The method to be checked.</param>
            <returns>
            <see lang="true"/> if this override matches the supplied <paramref name="method"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="method"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.LookupMethodOverride.ToString">
            <summary>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.LookupMethodOverride.ObjectName">
            <summary>
            The name of the object in the current IoC context that the
            dependency injected method must return.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.LookupMethodReplacer">
            <summary>
            An <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            implementation that simply returns the result of a lookup in an
            associated IoC container.
            </summary>
            <remarks>
            <p>
            This class is YCH.NET's implementation of Dependency Lookup via
            Method Injection.
            </p>
            <p>
            This class is reserved for internal use within the framework; it is
            not intended to be used by application developers using YCH.NET.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: LookupMethodReplacer.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.LookupMethodReplacer.#ctor(YCH.Objects.Factory.Config.IObjectDefinition,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Factory.Support.LookupMethodReplacer"/>
            class.
            </summary>
            <param name="objectDefinition">
            The object definition that is the target of the method replacement.
            </param>
            <param name="objectFactory">
            The enclosing IoC container with which the above
            <paramref name="objectDefinition"/> is associated.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied arguments is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.LookupMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Reimplements the supplied <paramref name="method"/> by returning the
            result of an object lookup in an enclosing IoC container.
            </summary>
            <param name="target">
            The instance whose <paramref name="method"/> is to be
            (re)implemented.
            </param>
            <param name="method">
            The method that is to be (re)implemented.
            </param>
            <param name="arguments">The target method's arguments.</param>
            <returns>
            The result of the object lookup.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ManagedDictionary">
            <summary>
            Tag subclass used to hold a dictionary of managed elements.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ManagedDictionary.cs,v 1.6 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ManagedDictionary.Resolve(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.Support.ManagedCollectionElementResolver)">
            <summary>
            Resolves this managed collection at runtime.
            </summary>
            <param name="objectName">
            The name of the top level object that is having the value of one of it's
            collection properties resolved.
            </param>
            <param name="definition">
            The definition of the named top level object.
            </param>
            <param name="propertyName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="resolver">
            The callback that will actually do the donkey work of resolving
            this managed collection.
            </param>
            <returns>A fully resolved collection.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ManagedDictionary.KeyType">
            <summary>
            Gets or sets the type of the keys of this managed dictionary.
            </summary>
            <value>The type of the keys of this managed dictionary.</value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ManagedDictionary.ValueType">
            <summary>
            Gets or sets the type of the values of this managed dictionary.
            </summary>
            <value>The type of the values of this managed dictionary.</value>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ManagedList">
            <summary>
            Tag subclass used to hold a list of managed elements.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ManagedList.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ManagedList.Resolve(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.Support.ManagedCollectionElementResolver)">
            <summary>
            Resolves this managed collection at runtime.
            </summary>
            <param name="objectName">
            The name of the top level object that is having the value of one of it's
            collection properties resolved.
            </param>
            <param name="definition">
            The definition of the named top level object.
            </param>
            <param name="propertyName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="resolver">
            The callback that will actually do the donkey work of resolving
            this managed collection.
            </param>
            <returns>A fully resolved collection.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ManagedList.ElementType">
            <summary>
            Gets or sets the type of the elements of this managed list.
            </summary>
            <value>The type of the elements of this managed list.</value>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ManagedSet">
            <summary>
            Tag subclass used to hold a set of managed elements.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ManagedSet.Resolve(System.String,YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.Support.ManagedCollectionElementResolver)">
            <summary>
            Resolves this managed collection at runtime.
            </summary>
            <param name="objectName">
            The name of the top level object that is having the value of one of it's
            collection properties resolved.
            </param>
            <param name="definition">
            The definition of the named top level object.
            </param>
            <param name="propertyName">
            The name of the property the value of which is being resolved.
            </param>
            <param name="resolver">
            The callback that will actually do the donkey work of resolving
            this managed collection.
            </param>
            <returns>A fully resolved collection.</returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ManagedSet.ElementType">
            <summary>
            Gets or sets the type of the elements of this managed set.
            </summary>
            <value>The type of the elements of this managed set.</value>
        </member>
        <member name="T:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy">
            <summary>
            An <see cref="T:YCH.Objects.Factory.Support.IInstantiationStrategy"/>
            implementation that supports method injection.
            </summary>
            <remarks>
            <p>
            Classes that want to take advantage of method injection must meet some
            stringent criteria. Every method that is to be method injected
            <b>must</b> be defined as either <see lang="virtual"/> or
            <see lang="abstract"/>. An <see cref="T:YCH.Objects.ObjectsException"/>
            will be thrown if these criteria are not met.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: MethodInjectingInstantiationStrategy.cs,v 1.4 2006/05/03 01:13:42 aseovic Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Support.SimpleInstantiationStrategy">
            <summary>
            Simple object instantiation strategy for use in
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> implementations.
            </summary>
            <remarks>
            <p>
            Does not support method injection, although it provides hooks for subclasses
            to override to add method injection support, for example by overriding methods.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: SimpleInstantiationStrategy.cs,v 1.11 2006/04/09 07:18:49 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy"/> 
        </member>
        <member name="F:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.log">
            <summary>
            The shared <see cref="T:log4net.ILog"/> instance for this class (and derived classes).
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.ConstructorInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="constructor">
            The <see cref="T:System.Reflection.ConstructorInfo"/> to be used to instantiate
            the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="constructor"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.Instantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.MethodInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="name">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="factoryMethod">
            The <see cref="T:System.Reflection.MethodInfo"/> to be used to get the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="factoryMethod"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>,
            injecting methods as appropriate.
            </summary>
            <remarks>
            <p>
            The default implementation of this method is to throw a
            <see cref="T:System.NotImplementedException"/>.
            </p>
            <p>
            Derived classes can override this method if they can instantiate an object
            with the Method Injection specified in the supplied
            <paramref name="definition"/>. Instantiation should use a no-arg constructor.
            </p>
            </remarks>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="objectName">
            The name associated with the object definition. The name can be a
            <see lang="null"/> or zero length string if we're autowiring an object that
            doesn't belong to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.ConstructorInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>,
            injecting methods as appropriate.
            </summary>
            <remarks>
            <p>
            The default implementation of this method is to throw a
            <see cref="T:System.NotImplementedException"/>.
            </p>
            <p>
            Derived classes can override this method if they can instantiate an object
            with the Method Injection specified in the supplied
            <paramref name="definition"/>. Instantiation should use the supplied
            <paramref name="constructor"/> and attendant <paramref name="arguments"/>.
            </p>
            </remarks>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="objectName">
            The name associated with the object definition. The name can be the null
            or zero length string if we're autowiring an object that doesn't belong
            to the supplied <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="constructor">
            The <see cref="T:System.Reflection.ConstructorInfo"/> to be used to instantiate
            the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="constructor"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
        </member>
        <member name="F:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.typeCache">
            <summary>
            A cache of generated <see cref="T:System.Type"/> instances, keyed on
            the object name for which the <see cref="T:System.Type"/> was generated.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.SyncRoot">
            <summary>
            The synchronization lock for the above cache of dynamically generated
            <see cref="T:System.Type"/> instances.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>,
            injecting methods as appropriate.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="objectName">
            The name associated with the object definition. The name can be the
            <see lang="null"/> or zero length string if we're autowiring an
            object that doesn't belong to the supplied
            <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory)"/> 
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.ConstructorInfo,System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>,
            injecting methods as appropriate.
            </summary>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="objectName">
            The name associated with the object definition. The name can be the
            <see lang="null"/> or zero length string if we're autowiring an
            object that doesn't belong to the supplied
            <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="constructor">
            The <see cref="T:System.Reflection.ConstructorInfo"/> to be used to instantiate
            the object.
            </param>
            <param name="arguments">
            Any arguments to the supplied <paramref name="constructor"/>. May be null.
            </param>
            <returns>
            An instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.Support.SimpleInstantiationStrategy.InstantiateWithMethodInjection(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Reflection.ConstructorInfo,System.Object[])"/> 
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.DoInstantiate(YCH.Objects.Factory.Support.RootObjectDefinition,System.String,YCH.Objects.Factory.IObjectFactory,System.Type[],System.Object[])">
            <summary>
            Instantiate an instance of the object described by the supplied
            <paramref name="definition"/> from the supplied <paramref name="factory"/>,
            injecting methods as appropriate.
            </summary>
            <remarks>
            <p>
            This method dynamically generates a subclass that supports method
            injection for the supplied <paramref name="definition"/>. It then
            instantiates an new instance of said type using the constructor
            identified by the supplied <paramref name="ctorParameterTypes"/>,
            passing the supplied <paramref name="arguments"/> to said
            constructor. It then manually injects (generic) method replacement
            and method lookup instances (of <see cref="T:System.Type"/>
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>) into
            the new instance: those methods that are 'method-injected' will
            then delegate to the approriate
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            instance to effect the actual method injection.
            </p>
            </remarks>
            <param name="definition">
            The definition of the object that is to be instantiated.
            </param>
            <param name="objectName">
            The name associated with the object definition. The name can be the
            <see lang="null"/> or zero length string if we're autowiring an
            object that doesn't belong to the supplied
            <paramref name="factory"/>.
            </param>
            <param name="factory">
            The owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            </param>
            <param name="ctorParameterTypes">
            The parameter <see cref="T:System.Type"/>s to use to find the
            appropriate constructor to invoke.
            </param>
            <param name="arguments">
            The aguments that are to be passed to the appropriate constructor
            when the object is being instantiated.
            </param>
            <returns>
            A new instance of the <see cref="T:System.Type"/> defined by the
            supplied <paramref name="definition"/>.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder">
            <summary>
            A <see cref="T:System.Type"/> factory that generates subclasses of those
            classes that have been configured for the Method-Injection form of
            Dependency Injection.
            </summary>
            <remarks>
            <p>
            This class is designed as for <c>one-shot</c> usage; i.e. it must
            be used to generate <i>exactly</i> one method injected subclass and
            then discarded (it maintains state in instance fields).
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.MethodReplacementPropertyName">
            <summary>
            The name of the generated <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            property (for method replacement).
            </summary>
            <remarks>
            <p>
            Exists so that clients of this class can use this name to set properties reflectively
            on the dynamically generated subclass.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.MethodLookupPropertyName">
            <summary>
            The name of the generated <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            property (for method lookup).
            </summary>
            <remarks>
            <p>
            Exists so that clients of this class can use this name to set properties reflectively
            on the dynamically generated subclass.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.#ctor(System.Reflection.Emit.ModuleBuilder,YCH.Objects.Factory.Support.RootObjectDefinition)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder"/> class.
            </summary>
            <param name="module">
            The <see cref="T:System.Reflection.Emit.ModuleBuilder"/> in which
            the generated <see cref="T:System.Type"/> is to be defined.
            </param>
            <param name="objectDefinition">
            The object definition that is the target of the method injection.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied arguments is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.BuildType">
            <summary>
            Builds a <see cref="T:System.Type"/> suitable for Method-Injection. 
            </summary>
            <returns>
            A <see cref="T:System.Type"/> suitable for Method-Injection. 
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.DefineMethods(System.Reflection.Emit.TypeBuilder)">
            <summary>
            Defines overrides for those methods that are configured with an appropriate
            <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>.
            </summary>
            <param name="typeBuilder">
            The overarching <see cref="T:System.Reflection.Emit.TypeBuilder"/> that is defining
            the generated <see cref="T:System.Type"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.DefineReplacedMethod(System.Reflection.Emit.TypeBuilder,System.Reflection.MethodInfo,System.Reflection.Emit.FieldBuilder)">
            <summary>
            Override the supplied <paramref name="method"/> with the logic
            encapsulated by the
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            defined by the supplied <paramref name="field"/>.
            </summary>
            <param name="typeBuilder">
            The builder for the subclass that is being generated.
            </param>
            <param name="method">
            The method on the superclass that is to be overridden.
            </param>
            <param name="field">
            The field defining the
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            that the overridden method will delegate to to do the 'actual'
            method injection logic.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.DefineOverrideMethodParameters(System.Reflection.ParameterInfo[],System.Reflection.Emit.MethodBuilder)">
            <summary>
            Defines the parameters to the method that is being overridden.
            </summary>
            <remarks>
            <p>
            Since we are simply overridding a method (in this method
            injection context), all we do here is simply copy the
            parameters (since we want a method with the exact same parameters).
            </p>
            </remarks>
            <param name="methodParameters">
            The parameters to the original method that is being overridden.
            </param>
            <param name="methodBuilder">
            The builder we are using to define the new overridden method.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.SetupTheReturnValueIfAny(System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.ILGenerator)">
            <summary>
            Generates the MSIL for actually returning a return value if the
            supplied <paramref name="returnValue"/> is not
            <see lang="null"/>.
            </summary>
            <param name="returnValue">
            The definition of the return value; if <see lang="null"/>, it
            means that no return value is to required (a <c>void</c>
            return type).
            </param>
            <param name="il">
            The <see cref="T:System.Reflection.Emit.ILGenerator"/> to emit
            the MSIL to.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.DefineReturnValueIfAny(System.Reflection.MethodInfo,System.Reflection.Emit.ILGenerator)">
            <summary>
            Generates the MSIL for a return value if the supplied
            <paramref name="method"/> returns a value.
            </summary>
            <param name="method">
            The method to be checked.
            </param>
            <param name="il">
            The <see cref="T:System.Reflection.Emit.ILGenerator"/> to emit
            the MSIL to.
            </param>
            <returns>
            The return value, or <see lang="null"/> if the method does not
            return a value (has a <c>void</c> return type).
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.PushArguments(System.Reflection.ParameterInfo[],System.Reflection.Emit.ILGenerator)">
            <summary>
            Pushes (sets up) the arguments for a call to the
            <see cref="M:YCH.Objects.Factory.Support.IMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])"/>
            method of an appropriate
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>.
            </summary>
            <param name="methodParameters">
            The parameters to the <i>original</i> method (will be bundled
            up into a generic <c>object[]</c> and passed as the third
            argument to the
            <see cref="M:YCH.Objects.Factory.Support.IMethodReplacer.Implement(System.Object,System.Reflection.MethodInfo,System.Object[])"/>
            invocation.
            </param>
            <param name="il">
            The <see cref="T:System.Reflection.Emit.ILGenerator"/> to emit
            the MSIL to.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodInjectingInstantiationStrategy.MethodInjectingTypeBuilder.DefineWritePropertyForMethodReplacement(System.Reflection.Emit.TypeBuilder,System.String,System.Reflection.Emit.FieldBuilder)">
            <summary>
            Simply generates the IL for a write only property for the
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/> <see cref="T:System.Type"/>. 
            </summary>
            <param name="typeBuilder">
            The <see cref="T:System.Type"/> in which the property is defined.
            </param>
            <param name="propertyName">
            The name of the (to be) generated property.
            </param>
            <param name="field">
            The (instance) field that the property is to 'set'.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.Support.MethodOverrides">
            <summary>
            A collection (with set semantics) of method overrides, determining which, if any,
            methods on a managed object the YCH.NET IoC container will override at runtime.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans</author>
            <version>$Id: MethodOverrides.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.MethodOverrides"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.#ctor(YCH.Objects.Factory.Support.MethodOverrides)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.MethodOverrides"/> class.
            </summary>
            <remarks>
            <p>
            Deep copy constructoe.
            </p>
            </remarks>
            <param name="other">
            The instance supplying initial overrides for this new instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.AddAll(YCH.Objects.Factory.Support.MethodOverrides)">
            <summary>
            Copy all given method overrides into this object.
            </summary>
            <param name="other">
            The overrides to be copied into this object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.Add(YCH.Objects.Factory.Support.MethodOverride)">
            <summary>
            Adds the supplied <paramref name="theOverride"/> to the overrides contained
            within this instance.
            </summary>
            <param name="theOverride">
            The <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/> to be
            added.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.AddOverloadedMethodName(System.String)">
            <summary>
            Adds the supplied <paramref name="methodName"/> to the overloaded method names
            contained within this instance.
            </summary>
            <param name="methodName">
            The overloaded method name to be added.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.IsOverloadedMethodName(System.String)">
            <summary>
            Returns true if the supplied <paramref name="methodName"/> is present within
            the overloaded method names contained within this instance.
            </summary>
            <param name="methodName">
            The overloaded method name to be checked.
            </param>
            <returns>
            True if the supplied <paramref name="methodName"/> is present within
            the overloaded method names contained within this instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.GetOverride(System.Reflection.MethodInfo)">
            <summary>
            Return the override for the given method, if any.
            </summary>
            <param name="method">
            The method to check for overrides for.
            </param>
            <returns>
            the override for the given method, if any.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.MethodOverrides.GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate
            through a collection.
            </summary>
            <remarks>
            <p>
            The returned <see cref="T:System.Collections.IEnumerator"/> is the
            <see cref="T:System.Collections.IEnumerator"/> exposed by the
            <see cref="P:YCH.Objects.Factory.Support.MethodOverrides.Overrides"/>
            property.
            </p>
            </remarks>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can iterate through a
            collection.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.MethodOverrides.Overrides">
            <summary>
            The collection of method overrides.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.MethodOverrides.IsEmpty">
            <summary>
            Returns true if this instance contains no overrides.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ObjectDefinitionHolder">
            <summary>
            Holder for an <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> with
            name and aliases.
            </summary>
            <remarks>
            <p>
            Recognized by
            <see cref="T:YCH.Objects.Factory.Support.AbstractAutowireCapableObjectFactory"/>
            for inner object definitions. Registered by
            <see cref="T:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser"/>,
            which also uses it as general holder for a parsed object definition.
            </p>
            <p>
            Can also be used for programmatic registration of inner object
            definitions. If you don't care about the functionality offered by the
            <see cref="T:YCH.Objects.Factory.IObjectNameAware"/> interface and the like,
            registering <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            or <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/> is good enough.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: ObjectDefinitionHolder.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionHolder.#ctor(YCH.Objects.Factory.Config.IObjectDefinition,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionHolder"/> class.
            </summary>
            <param name="definition">
            The object definition to be held by this instance.
            </param>
            <param name="name">
            The name of the object definition.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionHolder.#ctor(YCH.Objects.Factory.Config.IObjectDefinition,System.String,System.String[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionHolder"/> class.
            </summary>
            <param name="definition">
            The object definition to be held by this instance.
            </param>
            <param name="name">The name of the object.</param>
            <param name="aliases">
            Any aliases for the supplied <paramref name="definition"/>
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.ObjectDefinition">
            <summary>
            The <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> held by this
            instance.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.ObjectName">
            <summary>
            The name of the object definition.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.Aliases">
            <summary>
            Any aliases for the object definition.
            </summary>
            <remarks>
            <p>
            Guaranteed to never return <cref lang="null"/>; if the associated
            <see cref="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.ObjectDefinition"/>
            does not have any aliases associated with it, then an empty
            <see cref="T:System.String"/> array will be returned.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils">
            <summary>
            Utility methods that are useful for
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionReader"/>
            implementations.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <seealso cref="T:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser"/>
            <version>$Id: ObjectDefinitionReaderUtils.cs,v 1.11 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.GeneratedObjectIdSeparator">
            <summary>
            The string used as a separator in the generation of synthetic id's
            for those object definitions explicitly that aren't assigned one.
            </summary>
            <remarks>
            <p>
            If a <see cref="T:System.Type"/>  name or parent object definition
            name is not unique, "#1", "#2" etc will be appended, until such
            time that the name becomes unique.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.RegisterObjectDefinition(YCH.Objects.Factory.Support.ObjectDefinitionHolder,YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Registers the supplied <paramref name="objectDefinition"/> with the
            supplied <paramref name="registry"/>.
            </summary>
            <remarks>
            <p>
            This is a convenience method that registers the
            <see cref="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.ObjectDefinition"/>
            of the supplied <paramref name="objectDefinition"/> under the 
            <see cref="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.ObjectName"/>
            property value of said <paramref name="objectDefinition"/>. If the
            supplied <paramref name="objectDefinition"/> has any
            <see cref="P:YCH.Objects.Factory.Support.ObjectDefinitionHolder.Aliases"/>,
            then those aliases will also be registered with the supplied
            <paramref name="registry"/>.
            </p>
            </remarks>
            <param name="objectDefinition">
            The object definition holder containing the
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> that
            is to be registered.
            </param>
            <param name="registry">
            The registry that the supplied <paramref name="objectDefinition"/>
            is to be registered with.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied arguments is <see langword="null"/>.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the <paramref name="objectDefinition"/> could not be registered
            with the <paramref name="registry"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.GenerateObjectName(YCH.Objects.Factory.Config.IConfigurableObjectDefinition,YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Generates an object definition name for the supplied
            <paramref name="objectDefinition"/> that is guaranteed to be unique
            within the scope of the supplied <paramref name="registry"/>.
            </summary>
            <param name="objectDefinition">
            The <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>
            that requires a generated name.
            </param>
            <param name="registry">
            The
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            that the supplied <paramref name="objectDefinition"/> is to be
            registered with (needed so that the uniqueness of any generated
            name can be guaranteed).
            </param>
            <returns>
            An object definition name for the supplied
            <paramref name="objectDefinition"/> that is guaranteed to be unique
            within the scope of the supplied <paramref name="registry"/> and
            never <cref lang="null"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If either of the <paramref name="objectDefinition"/> or
            <paramref name="registry"/> arguments is <see langword="null"/>.
            </exception>
            <exception cref="T:YCH.Objects.Factory.ObjectDefinitionStoreException">
            If a unique name cannot be generated.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.CreateEventHandlerValue(System.String,System.String)">
            <summary>
            Factory method for getting concrete
            <see cref="T:YCH.Objects.IEventHandlerValue"/> instances.
            </summary>
            <param name="methodName">
            The name of the event handler method. This may be straight text, a regular
            expression, <see langword="null"/>, or empty.
            </param>
            <param name="eventName">
            The name of the event being wired. This too may be straight text, a regular
            expression, <see langword="null"/>, or empty.
            </param>
            <returns>
            A concrete <see cref="T:YCH.Objects.IEventHandlerValue"/>
            instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException">
            <summary>
            Thrown when the validation of an object definition failed.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionValidationException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException"/>
            class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionValidationException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException"/>
            class.
            </summary>
            <param name="message">The detail message.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionValidationException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException"/>
            class.
            </summary>
            <param name="message">
            The detail message.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ObjectDefinitionValidationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectDefinitionValidationException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader">
            <summary>
            Object definition reader for a simple properties format.
            </summary>
            <remarks>
            Provides object definition registration methods for
            <see cref="T:System.Collections.IDictionary"/> and
            <see cref="T:System.Resources.ResourceSet"/> instances. Typically applied to a
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>.
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.TrueValue">
            <summary>
            Value of a T/F attribute that represents true.
            Anything else represents false. Case seNsItive.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.Separator">
            <summary>
            Separator between object name and property name.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.ClassKey">
            <summary>
            Prefix for the class property of a root object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.SingletonKey">
            <summary>
            Special string added to distinguish if the object will be
            a singleton.
            </summary>
            <remarks>
            <p>
            Default is true.
            </p>
            </remarks>
            <example>
            <p>
            owner.(singleton)=true
            </p>
            </example>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.LazyInitKey">
            <summary>
            Special string added to distinguish if the object will be
            lazily initialised.
            </summary>
            <remarks>
            <p>
            Default is false.
            </p>
            </remarks>
            <example>
            <p>
            owner.(lazy-init)=true
            </p>
            </example>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.ParentKey">
            <summary>
            Reserved "property" to indicate the parent of a child object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RefSuffix">
            <summary>
            Property suffix for references to other objects in the current
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/>: e.g.
            owner.dog(ref)=fido.
            </summary>
            <remarks>
            <p>
            Whether this is a reference to a singleton or a prototype
            will depend on the definition of the target object.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RefPrefix">
            <summary>
            Prefix before values referencing other objects.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader"/>
            class.
            </summary>
            <param name="registry">
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.LoadObjectDefinitions(YCH.Core.IO.IResource)">
            <summary>
            Load object definitions from the supplied <paramref name="resource"/>.
            </summary>
            <param name="resource">
            The resource for the object definitions that are to be loaded.
            </param>
            <returns>
            The number of object definitions that were loaded.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.LoadObjectDefinitions(YCH.Core.IO.IResource,System.String)">
            <summary>
            Load object definitions from the specified properties file.
            </summary>
            <param name="resource">
            The resource descriptor for the properties file.
            </param>
            <param name="prefix">
            The match or filter for object definition names, e.g. 'objects.'
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">in case of loading or parsing errors</exception>
            <returns>the number of object definitions found</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Resources.ResourceSet)">
            <summary>
            Register object definitions contained in a
            <see cref="T:System.Resources.ResourceSet"/>, using all property keys (i.e.
            not filtering by prefix).
            </summary>
            <param name="rs">
            The <see cref="T:System.Resources.ResourceSet"/> containing object definitions.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions registered.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Resources.ResourceSet,System.String)">
            <summary>
            Register object definitions contained in a
            <see cref="T:System.Resources.ResourceSet"/>.
            </summary>
            <remarks>
            <p>
            Similar syntax as for an <see cref="T:System.Collections.IDictionary"/>.
            This method is useful to enable standard .NET internationalization support.
            </p>
            </remarks>
            <param name="rs">
            The <see cref="T:System.Resources.ResourceSet"/> containing object definitions.
            </param>
            <param name="prefix">
            The match or filter for object definition names, e.g. 'objects.'
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions registered.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Collections.IDictionary)">
            <summary>
            Register object definitions contained in an
            <see cref="T:System.Collections.IDictionary"/>, using all property keys
            (i.e. not filtering by prefix).
            </summary>
            <param name="id">
            The <see cref="T:System.Collections.IDictionary"/> containing object definitions.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions registered.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Collections.Specialized.NameValueCollection)">
            <summary>
            Registers object definitions contained in an <see cref="T:System.Collections.Specialized.NameValueCollection"/> 
            using all property keys ( i.e. not filtering by prefix )
            </summary>
            <param name="nameValueCollection">The <see cref="T:System.Collections.Specialized.NameValueCollection"/> containing 
            object definitions.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions registered.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Collections.IDictionary,System.String)">
            <summary>
            Register object definitions contained in a
            <see cref="T:System.Collections.IDictionary"/>.
            </summary>
            <remarks>
            <p>
            Ignores ineligible properties.
            </p>
            </remarks>
            <param name="id">IDictionary name -&gt; property (String or Object). Property values
            will be strings if coming from a Properties file etc. Property names
            (keys) must be strings. Type keys must be strings.
            </param>
            <param name="prefix">
            The match or filter within the keys in the map: e.g. 'objects.'
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions found.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinitions(System.Collections.IDictionary,System.String,System.String)">
            <summary>
            Register object definitions contained in a
            <see cref="T:System.Collections.IDictionary"/>.
            </summary>
            <remarks>
            <p>
            Ignores ineligible properties.
            </p>
            </remarks>
            <param name="id">IDictionary name -&gt; property (String or Object). Property values
            will be strings if coming from a Properties file etc. Property names
            (keys) must be strings. Type keys must be strings.
            </param>
            <param name="prefix">
            The match or filter within the keys in the map: e.g. 'objects.'
            </param>
            <param name="resourceDescription">
            The description of the resource that the
            <see cref="T:System.Collections.IDictionary"/> came from (for logging purposes).
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
            <returns>The number of object definitions found.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.RegisterObjectDefinition(System.String,System.Collections.IDictionary,System.String,System.String)">
            <summary>
            Get all property values, given a prefix (which will be stripped)
            and add the object they define to the factory with the given name
            </summary>
            <param name="name">The name of the object to define.</param>
            <param name="id">
            The <see cref="T:System.Collections.IDictionary"/> containing string pairs.
            </param>
            <param name="prefix">The prefix of each entry, which will be stripped.</param>
            <param name="resourceDescription">
            The description of the resource that the
            <see cref="T:System.Collections.IDictionary"/> came from (for logging purposes).
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of loading or parsing errors.
            </exception>
        </member>
        <member name="P:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.DefaultParentObject">
            <summary>
            Name of default parent object
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.PropertiesObjectDefinitionReader.ObjectDefinitionFactory">
            <summary>
            Gets or sets object definition factory to use.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.ReplacedMethodOverride">
            <summary>
            Represents the replacement of a method on a managed object by the IoC
            container.
            </summary>
            <remarks>
            <p>
            Note that this mechanism is <i>not</i> intended as a generic means of
            inserting crosscutting code: use AOP for that.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ReplacedMethodOverride.cs,v 1.2 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ReplacedMethodOverride.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.ReplacedMethodOverride"/> class.
            </summary>
            <param name="methodName">
            The name of the method that is to be overridden.
            </param>
            <param name="methodReplacerObjectName">
            The object name of the <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            instance in the surrounding IoC container. 
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the supplied arguments is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ReplacedMethodOverride.AddTypeIdentifier(System.String)">
            <summary>
            Add a fragment of a <see cref="T:System.Type"/> instance's <see cref="P:System.Type.FullName"/>
            such as <c>'Exception</c> or <c>System.Excep</c> to identify an argument
            <see cref="T:System.Type"/> for a dependency injected method.
            </summary>
            <param name="identifier">
            A (sub) string of a <see cref="T:System.Type"/> instance's <see cref="P:System.Type.FullName"/>.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="identifier"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
            <seeaso cref="M:YCH.Objects.Factory.Support.MethodOverride.Matches(System.Reflection.MethodInfo)"/> 
        </member>
        <member name="M:YCH.Objects.Factory.Support.ReplacedMethodOverride.Matches(System.Reflection.MethodInfo)">
            <summary>
            Does this <see cref="T:YCH.Objects.Factory.Support.MethodOverride"/>
            match the supplied <paramref name="method"/>?
            </summary>
            <param name="method">The method to be checked.</param>
            <returns>
            <see lang="true"/> if this override matches the supplied <paramref name="method"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="method"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.ReplacedMethodOverride.ToString">
            <summary>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Support.ReplacedMethodOverride.MethodReplacerObjectName">
            <summary>
            The object name of the <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/>
            instance in the surrounding IoC container. 
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Support.RootObjectDefinition">
            <summary>
            A plain-vanilla object definition.
            </summary>
            <remarks>
            <p>
            This is the most common type of object definition;
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> instances
            do not derive from a parent
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>, and usually
            (but not always - see below) have an
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType"/>
            and (optionally) some
            <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/> and
            <see cref="T:YCH.Objects.IPropertyValues"/>.
            </p>
            <p>
            Note that <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            instances do not have to specify an
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType"/> :
            This can be useful for deriving
            <see cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/> instances
            from such definitions, each with it's own
            <see cref="P:YCH.Objects.Factory.Support.AbstractObjectDefinition.ObjectType"/>,
            inheriting common property values and other settings from the parent.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: RootObjectDefinition.cs,v 1.19 2006/04/09 07:18:49 markpollack Exp $</version>
            <seealso cref="T:YCH.Objects.Factory.Support.ChildObjectDefinition"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/>
            class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="singleton">
            <see langword="true"/> if this object definition defines a singleton object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            for a singleton, providing property values and constructor arguments.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="arguments">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be applied to a new instance of the object.
            </param>
            <param name="properties">
            The <see cref="T:YCH.Objects.MutablePropertyValues"/> to be applied to
            a new instance of the object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,YCH.Objects.Factory.Config.AutoWiringMode)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            for a singleton using the supplied
            <see cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="autowireMode">
            The autowiring mode.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,YCH.Objects.Factory.Config.AutoWiringMode,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            for a singleton using the supplied
            <see cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="autowireMode">
            The autowiring mode.
            </param>
            <param name="dependencyCheck">
            Whether to perform a dependency check for objects (not
            applicable to autowiring a constructor, thus ignored there)
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            with the given singleton status, providing property values.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="properties">
            The <see cref="T:YCH.Objects.MutablePropertyValues"/> to be applied to
            a new instance of the object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.Type,YCH.Objects.MutablePropertyValues,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            with the given singleton status, providing property values.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object to instantiate.
            </param>
            <param name="properties">
            The <see cref="T:YCH.Objects.MutablePropertyValues"/> to be applied to
            a new instance of the object.
            </param>
            <param name="singleton">
            <see langword="true"/> if this object definition defines a singleton object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,YCH.Objects.MutablePropertyValues)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class
            for a singleton, providing property values and constructor arguments.
            </summary>
            <remarks>
            <p>
            Takes an object class name to avoid eager loading of the object class.
            </p>
            </remarks>
            <param name="typeName">
            The assembly qualified <see cref="P:System.Type.FullName"/> of the object to instantiate.
            </param>
            <param name="properties">
            The <see cref="T:YCH.Objects.MutablePropertyValues"/> to be applied to
            a new instance of the object.
            </param>
            <param name="arguments">
            The <see cref="T:YCH.Objects.Factory.Config.ConstructorArgumentValues"/>
            to be applied to a new instance of the object.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.#ctor(YCH.Objects.Factory.Config.IObjectDefinition)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Support.RootObjectDefinition"/> class.
            </summary>
            <remarks>
            <p>
            Deep copy constructor.
            </p>
            </remarks>
            <param name="other">
            The definition that is to be copied.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.Validate">
            <summary>
            Validate this object definition.
            </summary>
            <exception cref="T:YCH.Objects.Factory.Support.ObjectDefinitionValidationException">
            In the case of a validation failure.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.RootObjectDefinition.ToString">
            <summary>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </summary>
            <returns>
            A <see cref="T:System.String"/> that represents the current
            <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="T:YCH.Objects.Factory.Support.StaticListableObjectFactory">
            <summary>
            Static factory that permits the registration of existing singleton instances.
            </summary>
            <remarks>
            <p>
            Does not have support for prototype objects, aliases, and post startup object
            configuration.
            </p>
            <p>
            Serves as a simple example implementation of the <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/>
            interface, that manages existing object instances as opposed to creating new ones
            based on object definitions.
            </p>
            <p>
            The <see cref="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ConfigureObject(System.Object)"/>
            and
            <see cref="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ConfigureObject(System.Object,System.String)"/>
            methods are not supported by this class; this class deals exclusively with
            existing singleton instances, thus the methods mentioned previously make little sense in this context.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: StaticListableObjectFactory.cs,v 1.15 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Support.StaticListableObjectFactory.objects">
            <summary>
            Map from object name to object instance.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObject(System.String)">
            <summary>
            Return an instance of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObject(System.String,System.Type)">
            <summary>
            Return an instance of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <param name="requiredType">
            <see cref="T:System.Type"/> the object may match. Can be an interface or
            superclass of the actual class. For example, if the value is the
            <see cref="T:System.Object"/> class, this method will succeed whatever the
            class of the returned instance.
            </param>
            <returns>The instance of the object.</returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ContainsObject(System.String)">
            <summary>
            Does this object factory contain an object with the given name?
            </summary>
            <param name="name">The name of the object to query.</param>
            <returns>True if an object with the given name is defined.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.IsSingleton(System.String)">
            <summary>
            Is this object a singleton?
            </summary>
            <remarks>
            <p>
            That is, will <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            or <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String,System.Type)"/>
            always return the same object?
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>True if the named object is a singleton.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetType(System.String)">
            <summary>
            Determine the type of the object with the given name.
            </summary>
            <remarks>
            <p>
            More specifically, checks the type of object that
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/> would return.
            For an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>, returns the type
            of object that the <see cref="T:YCH.Objects.Factory.IFactoryObject"/> creates.
            </p>
            </remarks>
            <param name="name">The name of the object to query.</param>
            <returns>
            The <see cref="T:System.Type"/> of the object or <see langword="null"/> if
            not determinable.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetAliases(System.String)">
            <summary>
            Return the aliases for the given object name, if defined.
            </summary>
            <param name="name">The object name to check for aliases.</param>
            <returns>The aliases, or an empty array if none.</returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there's no such object definition.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectDefinition(System.String)">
            <summary>
            Not supported.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:System.NotSupportedException">
            Always, as object definitions are not supported by this <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            implementation.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectDefinition(System.String,System.Boolean)">
            <summary>
            Return the registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/> for the
            given object, allowing access to its property values and constructor
            argument values.
            </summary>
            <param name="name">The name of the object.</param>
            <param name="includeAncestors">Whether to search parent object factories.</param>
            <returns>
            The registered
            <see cref="T:YCH.Objects.Factory.Config.IObjectDefinition"/>.
            </returns>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If there is no object with the given name.
            </exception>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectDefinitionNames">
            <summary>
            Return the names of all objects defined in this factory.
            </summary>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectDefinitionNames(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or
            <see langword="null"/> for all object names.
            </param>
            <remarks>
            <p>
            Will not consider <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s,
            as the type of their created objects is not known before instantiation.
            </p>
            </remarks>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectNamesForType(System.Type)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or
            <see langword="null"/> for all object names.
            </param>
            <remarks>
            <p>
            Does consider objects created by <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s,
            or rather it considers the type of objects created by
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> (which means that
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s will be instantiated).
            </p>
            <p>
            Does not consider any hierarchy this factory may participate in.
            </p>
            </remarks>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the names of objects matching the given <see cref="T:System.Type"/>
            (including subclasses), judging from the object definitions.
            </summary>
            <remarks>
            <p>
            Since this implementation of the
            <see cref="T:YCH.Objects.Factory.IListableObjectFactory"/>
            interface does not support the notion of ptototype objects, the
            <paramref name="includePrototypes"/> parameter is ignored.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match, or <see langword="null"/>
            for all object names.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s). Ignored.
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            The names of all objects defined in this factory, or an empty array if none
            are defined.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectNamesForType(System.Type,System.Boolean,System.Boolean)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ContainsObjectDefinition(System.String)">
            <summary>
            Tests whether this object factory contains an object definition for the
            specified object name.
            </summary>
            <param name="name">The object name to query.</param>
            <returns>
            <b>True</b> if an object defintion is contained within this object factory.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectsOfType(System.Type)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <remarks>
            <p>
            This version of the <see cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)"/>
            method matches all kinds of object definitions, be they singletons, prototypes, or
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s. Typically, the results
            of this method call will be the same as a call to
            <code>IListableObjectFactory.GetObjectsOfType(type,true,true)</code> .
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.GetObjectsOfType(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return the object instances that match the given object
            <see cref="T:System.Type"/> (including subclasses), judging from either object
            definitions or the value of
            <see cref="P:YCH.Objects.Factory.IFactoryObject.ObjectType"/> in the case of
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> (class or interface) to match.
            </param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons (also applies to
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s too
            or just normal objects.
            </param>
            <returns>
            A <see cref="T:System.Collections.IDictionary"/> of the matching objects,
            containing the object names as keys and the corresponding object instances
            as values.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.AddObject(System.String,System.Object)">
            <summary>
            Add a new singleton object.
            </summary>
            <param name="name">
            The name to be associated with the object name.
            </param>
            <param name="instance">The singleton object.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ConfigureObject(System.Object)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance.
            </summary>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <exception cref="T:System.NotSupportedException">
            This feature is not currently supported.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.ConfigureObject(System.Object,System.String)">
            <summary>
            Injects dependencies into the supplied <paramref name="target"/> instance
            using the named object definition.
            </summary>
            <param name="target">
            The object instance that is to be so configured.
            </param>
            <param name="name">
            The name of the object definition expressing the dependencies that are to
            be injected into the supplied <parameref name="target"/> instance.
            </param>
            <exception cref="T:System.NotSupportedException">
            This feature is not currently supported.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.ConfigureObject(System.Object,System.String)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Support.StaticListableObjectFactory.Dispose">
            <summary>
            Defines a method to release allocated unmanaged resources.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Support.StaticListableObjectFactory.ObjectDefinitionCount">
            <summary>
            Return the number of objects defined in the factory.
            </summary>
            <value>
            The number of objects defined in the factory.
            </value>
        </member>
        <member name="P:YCH.Objects.Factory.Support.StaticListableObjectFactory.Item(System.String)">
            <summary>
            Return an instance of the given object name.
            </summary>
            <param name="name">The name of the object to return.</param>
            <returns>The instance of the object.</returns>
            <seealso cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser">
            <summary>
            Default implementation of the
            <see cref="T:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser"/> interface.
            </summary>
            <remarks>
            <p>
            Parses object definitions according to the standard YCH.NET schema.
            </p>
            <p>
            This schema is <b>typically</b> located at
            <a href="http://www.springframework.net/xsd/spring-objects.xsd">http://www.springframework.net/xsd/spring-objects.xsd</a>.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: DefaultXmlObjectDefinitionParser.cs,v 1.59 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser">
            <summary>
            Strategy interface for parsing XML object definitions.
            </summary>
            <remarks>
            <p>
            Used by <see cref="T:YCH.Objects.Factory.Xml.XmlResourceReader"/>
            for actually parsing a DOM document or
            <see cref="T:System.Xml.XmlElement"/> fragment.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <author>Sandu Turcan (.NET)</author>
            <version>$Id: IXmlObjectDefinitionParser.cs,v 1.10 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.ParseRootElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses the root element of the definition.
            </summary>
            <p>If the parser is namespace aware it is assumed that the entire
            contents of the root element will be parsed including child elements.
            Otherwise the method will return after parsing the attributes
            such as default-lazy-init etc.
            </p>
            <param name="root">
            The element to be parsed.
            </param>
            <param name="reader">
            The resource reader.
            </param>
            <returns>Returns the number of object definitons. Parsers that are not
            namespace aware are likely to return <c>0</c>.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.ParseElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses an element under the root node, typically
            an object definition or import statement.
            </summary>
            <remarks>
            <p>
            This method is never invoked if the parser is namespace aware
            and was called to process the root node.
            </p>
            </remarks>
            <param name="element">
            The element to be parsed.
            </param>
            <param name="reader">
            The resource reader.
            </param>
            <returns>
            <c>1</c> if the element yielded an object definition, otherwise <c>0</c>.
            </returns>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.Lifecycle">
            <summary>
            Indicates at which level the parser <b>can</b> be cached.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.IsNamespaceAware">
            <summary>
            If <see langword="true"/> will take over and process the
            whole document including elements from other namespaces.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.Namespace">
            <summary>
            The namespace URI for the standard YCH.NET object definition schema.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.log">
            <summary>
            The shared <see cref="T:log4net.ILog"/> instance for this class (and derived classes).
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseRootElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses the root element of the definition.
            </summary>
            <param name="root">
            The element to be parsed.
            </param>
            <param name="parser">
            The particular parser that is to handle the element's content.
            </param>
            <seealso cref="M:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.ParseRootElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses an element under the root node, typically
            an object definition or import statement.
            </summary>
            <param name="element">
            The element to be parsed.
            </param>
            <param name="parser">
            The particular parser that is to handle the element's content.
            </param>
            <returns>
            <c>1</c> if the element yielded an object definition, otherwise <c>0</c>.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser.ParseElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ImportObjectDefinitionResource(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Loads external XML object definitions from the resource described by the supplied
            <paramref name="resource"/>.
            </summary>
            <param name="resource">The XML element describing the resource.</param>
            <param name="parser">The namespace-aware parser.</param>
            <exception cref="T:YCH.Objects.Factory.ObjectDefinitionStoreException">
            If the resource could not be imported.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseEventListenerDefinition(System.String,YCH.Objects.Factory.Config.EventValues,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>Parses an event listener definition.</summary>
            <param name="name">
            The name associated with the object that the event handler is being defined on.
            </param>
            <param name="events">The events being populated.</param>
            <param name="element">
            The element containing the event listener definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.RegisterObjectDefinition(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse an object definition and register it with the object factory..
            </summary>
            <param name="element">
            The element containing the object definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <seealso cref="M:YCH.Objects.Factory.Support.ObjectDefinitionReaderUtils.RegisterObjectDefinition(YCH.Objects.Factory.Support.ObjectDefinitionHolder,YCH.Objects.Factory.Support.IObjectDefinitionRegistry)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseObjectDefinition(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse a standard object definition into a
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionHolder"/>,
            including object name and aliases.
            </summary>
            <remarks>
            <p>
            Object elements specify their canonical name via the "id" attribute
            and their aliases as a delimited "name" attribute.
            </p>
            <p>
            If no "id" is specified, uses the first name in the "name" attribute
            as the canonical name, registering all others as aliases.
            </p>
            </remarks>
            <param name="element">
            The element containing the object definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <returns>
            The object (definition) wrapped within an
            <see cref="T:YCH.Objects.Factory.Support.ObjectDefinitionHolder"/>
            instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.CalculateId(System.Xml.XmlElement,System.Collections.ArrayList)">
            <summary>
            Calculates an id for an object definition.
            </summary>
            <remarks>
            <p>
            Called when an object definition has not been explicitly defined
            with an id.
            </p>
            </remarks>
            <param name="element">
            The element containing the object definition.
            </param>
            <param name="aliases">
            The list of names defined for the object; may be <see lang="null"/>
            or even empty.
            </param>
            <returns>
            A calculated object definition id.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseObjectDefinition(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>Parse a standard object definition.</summary>
            <param name="element">The element containing the object definition.</param>
            <param name="id">The id of the object definition.</param>
            <param name="parser">The namespace-aware parser.</param>
            <returns>The object (definition).</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetMethodOverrideSubElements(System.String,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse method override argument subelements of the given object element.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetConstructorArgSubElements(System.String,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse constructor argument subelements of the given object element.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetEventHandlerSubElements(System.String,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse event handler subelements of the given object element.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetPropertyValueSubElements(System.String,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse property value subelements of the given object element.
            </summary>
            <param name="name">
            The name of the object (definition) associated with the property element (s)
            </param>
            <param name="element">
            The element containing the top level object definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <returns>
            The property (s) associated with the object (definition).
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParseConstructorArgElement(System.String,YCH.Objects.Factory.Config.ConstructorArgumentValues,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse a constructor-arg element.
            </summary>
            <param name="name">
            The name of the object (definition) associated with the ctor arg.
            </param>
            <param name="arguments">
            The list of constructor args associated with the object (definition).
            </param>
            <param name="element">
            The name of the element containing the ctor arg definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParsePropertyElement(System.String,YCH.Objects.MutablePropertyValues,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse a property element.
            </summary>
            <param name="name">
            The name of the object (definition) associated with the property.
            </param>
            <param name="properties">
            The list of properties associated with the object (definition).
            </param>
            <param name="element">
            The name of the element containing the property definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetPropertyValue(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Get the value of a property element (may be a list).</summary>
            <remarks>
            <p>
            Please note that even though this method is named Get<b>Property</b>Value,
            it is called by both the property and constructor argument element
            handlers.
            </p>
            </remarks>
            <param name="element">The property element.</param>
            <param name="name">
            The name of the object associated with the property.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.ParsePropertySubElement(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parse a value, ref or collection subelement of a property element.
            </summary>
            <param name="element">
            Subelement of property element; we don't know which yet.
            </param>
            <param name="name">
            The name of the object (definition) associated with the top level property.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetList(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Gets a list definition.
            </summary>
            <param name="element">
            The element describing the list definition.
            </param>
            <param name="name">
            The name of the object (definition) associated with the list definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <returns>The list definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetSet(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Gets a set definition.
            </summary>
            <param name="element">
            The element describing the set definition.
            </param>
            <param name="name">
            The name of the object (definition) associated with the set definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <returns>The set definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetMap(System.Xml.XmlElement,System.String,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Gets a map definition.
            </summary>
            <param name="element">
            The element describing the map definition.
            </param>
            <param name="name">
            The name of the object (definition) associated with the map definition.
            </param>
            <param name="parser">
            The namespace-aware parser.
            </param>
            <returns>The map definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.SelectNodes(System.Xml.XmlElement,System.String)">
            <summary>
            Selects sub-elements with a given
            <paramref name="childElementName">name</paramref>.
            </summary>
            <remarks>
            <p>
            Uses a namespace manager if necessary.
            </p>
            </remarks>
            <param name="element">
            The element to be searched in.
            </param>
            <param name="childElementName">
            The name of the child nodes to look for.
            </param>
            <returns>
            The child <see cref="T:System.Xml.XmlNode"/>s of the supplied
            <paramref name="element"/> with the supplied
            <paramref name="childElementName"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.SelectSingleNode(System.Xml.XmlElement,System.String)">
            <summary>
            Selects a single sub-element with a given
            <paramref name="childElementName">name</paramref>.
            </summary>
            <remarks>
            <p>
            Uses a namespace manager if necessary.
            </p>
            </remarks>
            <param name="element">
            The element to be searched in.
            </param>
            <param name="childElementName">
            The name of the child node to look for.
            </param>
            <returns>
            The first child <see cref="T:System.Xml.XmlNode"/> of the supplied
            <paramref name="element"/> with the supplied
            <paramref name="childElementName"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetNameValues(System.Xml.XmlElement,System.String)">
            <summary>
            Gets a name value collection mapping definition.
            </summary>
            <param name="element">
            The element describing the name value collection mapping definition.
            </param>
            <param name="name">
            The name of the object (definition) associated with the
            name value collection mapping definition.
            </param>
            <returns>The name value collection definition.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetTextValue(System.Xml.XmlElement,System.String)">
            <summary>
            Returns the text of the supplied <paramref name="element"/>,
            or the empty string value if said <paramref name="element"/> is empty.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="element"/> is <see langword="null"/>,
            then the empty string value will be returned.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetDependencyCheck(System.String)">
            <summary>
            Strips the dependency check value out of the supplied string.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="value"/> is an invalid dependency
            checking mode, the invalid value will be logged and this method will
            return the <see cref="F:YCH.Objects.Factory.Support.DependencyCheckingMode.None"/> value.
            No exception will be raised.
            </p>
            </remarks>
            <param name="value">
            The string containing the dependency check value.
            </param>
            <returns>The dependency check value.</returns>
            <seealso cref="T:YCH.Objects.Factory.Support.DependencyCheckingMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetAutowireMode(System.String)">
            <summary>
            Strips the autowiring mode out of the supplied string.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="value"/> is an invalid autowiring mode,
            the invalid value will be logged and this method will return the
            <see cref="F:YCH.Objects.Factory.Config.AutoWiringMode.No"/> value. No exception will be raised.
            </p>
            </remarks>
            <param name="value">
            The string containing the autowiring mode definition.
            </param>
            <returns>The autowiring mode.</returns>
            <seealso cref="T:YCH.Objects.Factory.Config.AutoWiringMode"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.GetObjectNames(System.String)">
            <summary>
            Given a string containing delimited object names, returns
            a string array split on the object name delimeter.
            </summary>
            <param name="value">
            The string containing delimited object names.
            </param>
            <returns>
            A string array split on the object name delimeter.
            </returns>
            <seealso cref="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ObjectNameDelimiters"/>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.Lifecycle">
            <summary>
            Instances of this parser are stateless, so can persist globally.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.DefaultXmlObjectDefinitionParser.IsNamespaceAware">
            <summary>
            The parser will let the resource reader process namespaces.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.ParserLifecycle">
            <summary>
            Specifies how instances of <see cref="T:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser"/> are
            cached.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ParserLifecycle.Global">
            <summary>
            Cached globally, used by stateless, thread-safe parsers.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ParserLifecycle.DefinitionReader">
            <summary>
            Cached within the scope of one object definition, i.e.
            will maintain state across multiple resources used by the
            same definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ParserLifecycle.Resource">
            <summary>
            Cached within the scope of one resource, so if the
            definition spawns multiple resources an instance will
            be created for each one.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.ObjectDefinitionConstants">
            <summary>
            Constants defining the structure and values associated with the
            YCH.NET XML object definition format.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectDefinitionConstants.cs,v 1.6 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.TrueValue">
            <summary>
            Value of a boolean attribute that represents
            <see langword="true"/>.
            </summary>
            <remarks>
            <p>
            Anything else represents <see langword="false"/>.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DefaultValue">
            <summary>
            Signifies that a default value is to be applied.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ImportElement">
            <summary>
            Defines an external XML object definition resource.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ImportResourceAttribute">
            <summary>
            Specifies the relative path to an external XML object definition
            resource.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AliasElement">
            <summary>
            Defines an alias for an object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AliasAttribute">
            <summary>
            Specifies the alias of an object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DefaultLazyInitAttribute">
            <summary>
            Specifies the default lazy initialization mode.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DefaultDependencyCheckAttribute">
            <summary>
            Specifies the default dependency checking mode.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DefaultAutowireAttribute">
            <summary>
            Specifies the default autowire mode.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ObjectElement">
            <summary>
            Defines a single named object.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DescriptionElement">
            <summary>
            Element containing informative text describing the purpose of the
            enclosing element.
            </summary>
            <remarks>
            <p>
            Always optional.
            </p>
            <p>
            Used primarily for user documentation of XML object definition
            documents.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.TypeAttribute">
            <summary>
            Specifies a <see cref="T:System.Type"/>.
            </summary>
            <remarks>
            <p>
            Does not have to be fully assembly qualified, but it is recommended
            that the <see cref="T:System.Type"/> names of one's objects are
            specified explicitly.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ParentAttribute">
            <summary>
            The name or alias of the parent object definition that a child
            object definition inherits from.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.IdAttribute">
            <summary>
            Objects can be identified by an id, to enable reference checking.
            </summary>
            <remarks>
            <p>
            There are constraints on a valid XML id: if you want to reference
            your object in .NET code using a name that's illegal as an XML id,
            use the optional <c>"name"</c> attribute
            (<see cref="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.NameAttribute"/>).
            If neither given, the objects <see cref="T:System.Type"/> name is
            used as id.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.NameAttribute">
            <summary>
            Can be used to create one or more aliases illegal in an id.
            </summary>
            <remarks>
            <p>
            Multiple aliases can be separated by any number of spaces,
            semicolons, or commas
            (<see cref="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ObjectNameDelimiters"/>).
            </p>
            <p>
            Always optional.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.SingletonAttribute">
            <summary>
            Is this object a "singleton" (one shared instance, which will
            be returned by all calls to
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/> with the id), or a
            "prototype" (independent instance resulting from each call to
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>).
            </summary>
            <remarks>
            <p>
            Singletons are most commonly used, and are ideal for multi-threaded
            service objects.
            </p>
            </remarks>
            <seealso cref="T:YCH.Objects.Factory.IObjectFactory"/>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ScopeAttribute">
            <summary>
            Controls object scope. Only applicable to ASP.NET web applications.
            </summary>
            <remarks>
            <p>
            Scope can be defined as either application, session or request. It
            defines when "singleton" instances are initialized, but has no
            effect on prototype definitions.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DependsOnAttribute">
            <summary>
            The names of the objects that this object depends on being
            initialized.
            </summary>
            <remarks>
            <p>
            The object factory will guarantee that these objects
            get initialized before this object definition.
            </p>
            <note>
            Dependencies are normally expressed through object properties or
            constructor arguments. This property should just be necessary for
            other kinds of dependencies such as statics (*ugh*) or database
            preparation on startup.
            </note>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.InitMethodAttribute">
            <summary>
            Optional attribute for the name of the custom initialization method
            to invoke after setting object properties.
            </summary>
            <remarks>
            <p>
            The method <b>must</b> have no arguments.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DestroyMethodAttribute">
            <summary>
            Optional attribute for the name of the custom destroy method to
            invoke on object factory shutdown.
            </summary>
            <remarks>
            <p>
            Valid destroy methods have either of the following signatures...
            <list type="bullet">
            <item><c>void MethodName()</c></item>
            <item><c>void MethodName(bool force)</c></item>
            </list>
            </p>
            <note>
            Only invoked on singleton objects!
            </note>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ConstructorArgElement">
            <summary>
            A constructor argument : the constructor-arg tag can have an
            optional type attribute, to specify the exact type of the
            constructor argument
            </summary>
            <remarks>
            <p>
            Only needed  to avoid ambiguities, e.g. in case of 2 single
            argument constructors that can both be converted from a
            <see cref="T:System.String"/>.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.IndexAttribute">
            <summary>
            The constructor-arg tag can have an optional index attribute,
            to specify the exact index in the constructor argument list.
            </summary>
            <remarks>
            <p>
            Only needed to avoid ambiguities, e.g. in case of 2 arguments of
            the same type.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ArgumentNameAttribute">
            <summary>
            The constructor-arg tag can have an optional named parameter
            attribute, to specify a named parameter in the constructor
            argument list.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AbstractAttribute">
            <summary>
            Is this object "abstract", i.e. not meant to be instantiated itself
            but rather just serving as parent for concrete child object
            definitions?
            </summary>
            <remarks>
            <p>
            Default is <see langword="false"/>. Specify <see langword="true"/>
            to tell the object factory to not try to instantiate that
            particular object in any case.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.PropertyElement">
            <summary>
            A property definition : object definitions can have zero or more
            properties.
            </summary>
            <remarks>
            <p>
            YCH.NET supports primitives, references to other objects in the
            same or related factories, lists, dictionaries, and name value
            collections.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.RefElement">
            <summary>
            A reference to another managed object or static
            <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.IdRefElement">
            <summary>
            ID refs must specify a name of the target object.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ObjectRefAttribute">
            <summary>
            A reference to the name of another managed object in the same
            context.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.LocalRefAttribute">
            <summary>
            A reference to the name of another managed object in the same
            context.
            </summary>
            <remarks>
            <p>
            Local references, using the "local" attribute, have to use object
            ids; they can be checked by a parser, thus should be preferred for
            references within the same object factory XML file.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.FactoryObjectAttribute">
            <summary>
            Alternative to type attribute for factory-method usage.
            </summary>
            <remarks>
            <p>
            If this is specified, no type attribute should be used. This should
            be set to the name of an object in the current or ancestor
            factories that contains the relevant factory method. This allows
            the factory itself to be configured using Dependency Injection, and
            an instance (rather than static) method to be used.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.FactoryMethodAttribute">
            <summary>
            Optional attribute specifying the name of a factory method to use
            to create this object.
            </summary>
            <remarks>
            <p>
            Use constructor-arg elements to specify arguments to the factory
            method, if it takes arguments. Autowiring does <b>not</b> apply to
            factory methods.
            </p>
            <p>
            If the "type" attribute is present, the factory method will be a
            static method on the type specified by the "type" attribute on
            this object definition. Often this will be the same type as that
            of the constructed object - for example, when the factory method
            is used as an alternative to a constructor. However, it may be on
            a different type. In that case, the created object will *not* be
            of the type specified in the "type" attribute. This is analogous
            to <see cref="T:YCH.Objects.Factory.IFactoryObject"/> behaviour.
            </p>
            <p>
            If the "factory-object" attribute is present, the "type" attribute
            is not used, and the factory method will be an instance method on
            the object returned from a
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            call with the specified object name. The factory object may be
            defined as a singleton or a prototype.
            </p>
            <p>
            The factory method can have any number of arguments. Use indexed
            constructor-arg elements in conjunction with the factory-method
            attribute.
            </p>
            <p>
            Setter Injection can be used in conjunction with a factory method.
            Method Injection cannot, as the factory method returns an instance,
            which will be used when the container creates the object.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ListElement">
            <summary>
            A list can contain multiple inner object, ref, collection, or
            value elements.
            </summary>
            <remarks>
            <p>
            Lists are untyped, pending generics support, although references
            will be strongly typed.
            </p>
            <p>
            A list can also map to an array type. The necessary conversion is
            automatically performed by the
            <see cref="T:YCH.Objects.Factory.Support.AbstractObjectFactory"/>.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.SetElement">
            <summary>
            A set can contain multiple inner object, ref, collection, or value
            elements.
            </summary>
            <remarks>
            <p>
            Sets are untyped, pending generics support, although references
            will be strongly typed.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DictionaryElement">
            <summary>
            A YCH.NET map is a mapping from a string key to object (a .NET
            <see cref="T:System.Collections.IDictionary"/>).
            </summary>
            <remarks>
            <p>
            Dictionaries may be empty.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.KeyAttribute">
            <summary>
            A lookup key (for a dictionary or name / value collection).
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.KeyElement">
            <summary>
            A lookup key (for a dictionary or name / value collection).
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ValueAttribute">
            <summary>
            Contains a string representation of a value.
            </summary>
            <remarks>
            <p>
            This is used by name-value, ctor argument, and property elements.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.RefAttribute">
            <summary>
            A reference to another objects.
            </summary>
            <remarks>
            <p>
            Used as a convenience shortcut on property and constructor-arg
            elements to refer to other objects.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.EntryElement">
            <summary>
            A map entry can be an inner object, ref, collection, or value.
            </summary>
            <remarks>
            <p>
            The name of the property is given by the "key" attribute.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ValueElement">
            <summary>
            Contains a string representation of a property value.
            </summary>
            <remarks>
            <p>
            The property may be a string, or may be converted to the
            required <see cref="T:System.Type"/> using the
            <see cref="T:System.ComponentModel.TypeConverter"/> 
            machinery. This makes it possible for application developers to
            write custom <see cref="T:System.ComponentModel.TypeConverter"/>
            implementations that can convert strings to objects.
            </p>
            <note>
            This is recommended for simple objects only. Configure more complex
            objects by setting properties to references to other objects.
            </note>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.NullElement">
            <summary>
            Denotes <see langword="null"/>  value.
            </summary>
            <remarks>
            <p>
            Necessary because an empty "value" tag will resolve to an empty
            <see cref="T:System.String"/>, which will not be resolved to
            <see langword="null"/> value unless a special
            <see cref="T:System.ComponentModel.TypeConverter"/> does so.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.NameValuesElement">
            <summary>
            'name-values' elements differ from dictionary elements in that
            values must be strings.
            </summary>
            <remarks>
            <p>
            May be empty.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AddElement">
            <summary>
            Element content is the string value of the property.
            </summary>
            <remarks>
            <p>
            The "key" attribute is the name of the property.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.LazyInitAttribute">
            <summary>
            The lazy initialization mode for an individual object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DependencyCheckAttribute">
            <summary>
            The dependency checking mode for an individual object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ListenerElement">
            <summary>
            Defines a subscription to one or more events published by one or
            more event sources.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ListenerMethodAttribute">
            <summary>
            The name of an event handling method.
            </summary>
            <remarks>
            <p>
            Defaults to <c>On${event}</c>.
            <b>Note : this default will probably change before the first 1.0
            release.</b>
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ListenerEventAttribute">
            <summary>
            The name of an event.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AutowireAttribute">
            <summary>
            The autowiring mode for an individual object definition.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DictionaryKeyRefShortcutAttribute">
            <summary>
            Shortcut alternative to specifying a key element in a
            dictionary entry element with <c>&lt;ref object="..."/&gt;</c>.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DictionaryValueRefShortcutAttribute">
            <summary>
            Shortcut alternative to specifying a value element in a
            dictionary entry element with <c>&lt;ref object="..."/&gt;</c>.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ObjectNameDelimiters">
            <summary>
            The string of characters that delimit object names.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.LookupMethodElement">
            <summary>
            A lookup method causes the IoC container to override a given method and return
            the object with the name given in the attendant <c>object</c> attribute.
            </summary>
            <remarks>
            <p>
            This is a form of Method Injection.
            </p>
            <p>
            It's particularly useful as an alternative to implementing the
            <see cref="T:YCH.Objects.Factory.IObjectFactoryAware"/> interface,
            in order to be able to make
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            calls for non-singleton instances at runtime. In this case, Method Injection
            is a less invasive alternative.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.LookupMethodNameAttribute">
            <summary>
            The name of a lookup method. This method <b>must</b> take no arguments.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.LookupMethodObjectNameAttribute">
            <summary>
            The name of the object in the IoC container that the lookup method
            must resolve to.
            </summary>
            <remarks>
            <p>
            Often this object will be a prototype, in which case the lookup method
            will return a distinct instance on every invocation. This is useful
            for single-threaded objects.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodElement">
            <summary>
            A replaced method causes the IoC container to override a given method
            with an (arbitrary) implementation at runtime.
            </summary>
            <remarks>
            <p>
            This (again) is a form of Method Injection.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodNameAttribute">
            <summary>
            Name of the method whose implementation should be replaced by the
            IoC container.
            </summary>
            <remarks>
            <p>
            If this method is not overloaded, there's no need to use arg-type 
            subelements.
            </p>
            <p>
            If this method is overloaded, <c>arg-type</c> subelements must be
            used for all override definitions for the method.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodReplacerNameAttribute">
            <summary>
            The object name of an implementation of the
            <see cref="T:YCH.Objects.Factory.Support.IMethodReplacer"/> interface.
            </summary>
            <remarks>
            <p>
            This may be a singleton or prototype. If it's a prototype, a new
            instance will be used for each method replacement. Singleton usage
            is the norm.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodArgumentTypeElement">
            <summary>
            Subelement of <c>replaced-method</c> identifying an argument for a
            replaced method in the event of method overloading.
            </summary>
            <seealso cref="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodReplacerNameAttribute"/> 
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodArgumentTypeMatchAttribute">
            <summary>
            Specification of the <see cref="T:System.Type"/> of an overloaded method
            argument as a <see cref="T:System.String"/>.
            </summary>
            <remarks>
            <p>
            For convenience, this may be a substring of the FQN. E.g. all the following would match
            <see cref="T:System.String"/>:
            </p>
            <p>
            <list type="bullet">
            <item>
            <description>System.String</description>
            </item>
            <item>
            <description>string</description>
            </item>
            <item>
            <description>str</description>
            </item>
            </list>
            </p>
            </remarks>
            <seealso cref="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.ReplacedMethodArgumentTypeElement"/> 
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DependencyCheckAllAttributeValue">
            <summary>
            Check everything.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DependencyCheckSimpleAttributeValue">
            <summary>
            Just check primitive (string, int, etc) values.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.DependencyCheckObjectsAttributeValue">
            <summary>
            Check object references.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AutowireByNameValue">
            <summary>
            Autowire by name.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AutowireByTypeValue">
            <summary>
            Autowire by <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AutowireConstructorValue">
            <summary>
            Autowiring by constructor.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.AutowireAutoDetectValue">
            <summary>
            The autowiring strategy is to be determined by introspection
            of the object's <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.ObjectDefinitionConstants.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Xml.ObjectDefinitionConstants"/>
            class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly visible
            constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader">
            <summary>
            Object definition reader for Spring's default XML object definition format.
            </summary>
            <remarks>
            <p>
            Typically applied to a
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/> instance.
            </p>
            <p>
            This class registers each object definition with the given object factory superclass,
            and relies on the latter's implementation of the
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/> interface.
            </p>
            <p>
            It supports singletons, prototypes, and references to either of these kinds of object.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: XmlObjectDefinitionReader.cs,v 1.19 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/> class.
            </summary>
            <param name="registry">
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.#ctor(YCH.Objects.Factory.Support.IObjectDefinitionRegistry,System.Xml.XmlResolver)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/> class.
            </summary>
            <param name="registry">
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            instance that this reader works on.
            </param>
            <param name="resolver">
            The <see cref="T:System.Xml.XmlResolver"/>to be used for parsing.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.LoadObjectDefinitions(YCH.Core.IO.IResource)">
            <summary>
            Load object definitions from the supplied XML <paramref name="resource"/>.
            </summary>
            <param name="resource">
            The XML resource for the object definitions that are to be loaded.
            </param>
            <returns>
            The number of object definitions that were loaded.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.HandleValidation(System.Object,System.Xml.Schema.ValidationEventArgs)">
            <summary>
            Validation callback for a validating XML reader.
            </summary>
            <param name="sender">The source of the event.</param>
            <param name="args">Any data pertinent to the event.</param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.RegisterObjectDefinitions(System.Xml.XmlDocument,YCH.Core.IO.IResource)">
            <summary>
            Register the object definitions contained in the given DOM document.
            </summary>
            <param name="doc">The DOM document.</param>
            <param name="resource">
            The original resource from where the <see cref="T:System.Xml.XmlDocument"/>
            was read.
            </param>
            <returns>
            The number of object definitions that were registered.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.RegisterObjectDefinitions(System.Xml.XmlElement,YCH.Core.IO.IResource)">
            <summary>
            Register the object definitions contained in the given
            <see cref="T:System.Xml.XmlElement"/> document.
            </summary>
            <param name="objectsElement">
            The element containg object definitions.
            </param>
            <param name="resource">
            The original resource from where the <see cref="T:System.Xml.XmlDocument"/>
            was read.
            </param>
            <returns>
            The number of object definitions that were registered.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.CreateXmlResourceReader(YCH.Core.IO.IResource)">
            <summary>
            This method may be overrided to implement validators
            </summary>
            <param name="resource"></param>
            <returns></returns>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader.Resolver">
            <summary>
            The <see cref="T:System.Xml.XmlResolver"/>to be used for parsing.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.XmlObjectFactory">
            <summary>
            Convenience extension of
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>
            that reads object definitions from an XML document or element.
            </summary>
            <remarks>
            <p>
            Delegates to
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/>
            underneath; effectively equivalent to using a
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/> for a
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>.
            </p>
            <note>
            <i>objects</i> doesn't need to be the root element of
            the XML document: this class will parse all object definition elements in the
            XML stream.
            </note>
            <p>
            This class registers each object definition with the
            <see cref="T:YCH.Objects.Factory.Support.DefaultListableObjectFactory"/>
            superclass, and relies on the latter's implementation of the
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> interface. It supports
            singletons, prototypes and references to either of these kinds of object.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: XmlObjectFactory.cs,v 1.10 2006/04/09 07:18:49 markpollack Exp $</version>
            <see cref="T:YCH.Objects.Factory.Xml.XmlObjectDefinitionReader"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectFactory.#ctor(YCH.Core.IO.IResource)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Factory.Xml.XmlObjectFactory"/> class,
            with the given resource, which must be parsable using DOM.
            </summary>
            <param name="resource">
            The XML resource to load object definitions from.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectFactory.#ctor(YCH.Core.IO.IResource,System.Boolean)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Factory.Xml.XmlObjectFactory"/> class,
            with the given resource, which must be parsable using DOM.
            </summary>
            <param name="resource">
            The XML resource to load object definitions from.
            </param>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectFactory.#ctor(YCH.Core.IO.IResource,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Factory.Xml.XmlObjectFactory"/> class,
            with the given resource, which must be parsable using DOM, and the
            given parent factory.
            </summary>
            <param name="resource">
            The XML resource to load object definitions from.
            </param>
            <param name="parentFactory">The parent object factory (may be <see langword="null"/>).</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlObjectFactory.#ctor(YCH.Core.IO.IResource,System.Boolean,YCH.Objects.Factory.IObjectFactory)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Factory.Xml.XmlObjectFactory"/> class,
            with the given resource, which must be parsable using DOM, and the
            given parent factory.
            </summary>
            <param name="resource">
            The XML resource to load object definitions from.
            </param>
            <param name="caseSensitive">Flag specifying whether to make this object factory case sensitive or not.</param>
            <param name="parentFactory">The parent object factory (may be <see langword="null"/>).</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of loading or parsing errors.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.XmlParserRegistry">
            <summary>
            Provides a resolution mechanism for configuration parsers.
            </summary>
            <remarks>
            <p>
            The <see cref="T:YCH.Objects.Factory.Xml.XmlResourceReader"/> uses this registry
            class to find the parser handling a specific namespace.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: XmlParserRegistry.cs,v 1.4 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlParserRegistry.#ctor">
            <summary>
            Creates a new instance of the XmlParserRegistry class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlParserRegistry.GetParser(System.String)">
            <summary>
            Returns a parser for the given namespace.
            </summary>
            <param name="namespaceURI">
            The namespace for which to lookup the parser implementation.
            </param>
            <returns>
            A parser for a given <paramref name="namespaceURI"/>, or
            <see langword="null"/> if no parser was found.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlParserRegistry.GetSchemas">
            <summary>
            Returns a schema collection containing validation schemas for all registered parsers.
            </summary>
            <returns>
            A schema collection containing validation schemas for all registered parsers.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlParserRegistry.RegisterParser(System.String,System.Type,System.String)">
            <summary>
            Associates a parser with a namespace.
            </summary>
            <remarks>
            <note>
            Parsers registered with the same <paramref name="namespaceUri"/> as that
            of a parser that has previously been registered will overwrite the existing
            parser.
            </note>
            </remarks>
            <param name="namespaceUri">
            The namespace with which to associate instance of the parser.
            </param>
            <param name="parserType">
            The <see cref="T:System.Type"/> of the parser that will be activated
            when the attendant <paramref name="namespaceUri"/> is
            encountered.
            </param>
            <param name="schemaLocation">
            The location of the XML schema that should be used for validation 
            of the XML elements that belong to the specified namespace 
            (can be any valid Spring.NET resource URI).
            </param>
            <exception cref="T:System.ArgumentException">
            If the <paramref name="parserType"/> is not a <see cref="T:System.Type"/>
            that implements the <see cref="T:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser"/>
            interface; or the <paramref name="namespaceUri"/> contains only whitespace.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If either of the <paramref name="parserType"/> or
            <paramref name="namespaceUri"/> parameters is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlParserRegistry.RegisterParser(System.String,YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser,System.String)">
            <summary>
            Associates a parser with a namespace.
            </summary>
            <remarks>
            <note>
            Parsers registered with the same <paramref name="namespaceUri"/> as that
            of a parser that has previously been registered will overwrite the existing
            parser.
            </note>
            </remarks>
            <param name="namespaceUri">
            The namespace with which to associate instance of the parser.
            </param>
            <param name="parser">
            The parser instance.
            </param>
            <param name="schemaLocation">
            The location of the XML schema that should be used for validation 
            of the XML elements that belong to the specified namespace 
            (can be any valid YCH.NET resource URI).
            </param>
            <exception cref="T:System.ArgumentNullException">
            If either of the <paramref name="parser"/> or
            <paramref name="namespaceUri"/> parameters is <see langword="null"/>.
            </exception>
        </member>
        <member name="T:YCH.Objects.Factory.Xml.XmlResourceReader">
            <summary>
            XML resource reader.
            </summary>
            <remarks>
            <p>
            Navigates through an XML resource and invokes parsers registered
            with the <see cref="T:YCH.Objects.Factory.Xml.XmlParserRegistry"/>.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: XmlResourceReader.cs,v 1.15 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.XmlResourceReader.GeneratedIdSeparator">
            <summary>
            The string used as a separator in the generation of synthetic id's for
            those object definitions explicitly that aren't assigned one.
            </summary>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.XmlResourceReader.MaxXmlErrorFragmentLength">
            <summary>
            The maximum length of any XML fragment displayed in the error message
            reporting.
            </summary>
            <remarks>
            <p>
            Hopefully this will display enough context so that a user
            can pinpoint the cause of the error.
            </p>
            </remarks>
        </member>
        <member name="F:YCH.Objects.Factory.Xml.XmlResourceReader.log">
            <summary>
            The shared <see cref="T:log4net.ILog"/> instance for this class (and derived classes). 
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlResourceReader.#ctor(YCH.Objects.Factory.Xml.XmlObjectDefinitionReader,YCH.Core.IO.IResource)">
            <summary>
            Creates a new instance of the XmlResourceReader class.
            </summary>
            <param name="reader">
            The object reader to use. Contains the
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            to populate, and the <see cref="T:System.AppDomain"/> against which
            <see cref="T:System.Type"/> instances are to be resolved.
            </param>
            <param name="resource">
            Descriptor of the original XML resource (useful for displaying parse errors).
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlResourceReader.RegisterObjectDefinitions(System.Xml.XmlElement)">
            <summary>
            Parse object definitions from the given DOM element, and register
            them with the given object registry.
            </summary>
            <param name="root">
            The DOM element containing object definitions, usually the
            root (document) element.
            </param>
            <returns>
            The number of object definitions that were loaded.
            </returns>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of (parsing) errors.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlResourceReader.ReportException(System.Xml.XmlNode,System.String,System.String)">
            <summary>
            Reports a parse error by loading a
            <see cref="T:YCH.Objects.ObjectsException"/> with helpful contextual
            information and throwing said exception.
            </summary>
            <remarks>
            <p>
            Derived classes can of course override this method in order to implement
            validators capable of displaying a full list of errors found in the
            definition.
            </p>
            </remarks>
            <param name="node">
            The node that triggered the parse error.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            <b>Always</b> throws an instance of this exception class, that will
            contain helpful contextual infomation about the parse error.
            </exception>
            <seealso cref="M:YCH.Objects.Factory.Xml.XmlResourceReader.ReportException(System.Xml.XmlNode,System.String,System.String,System.Exception)"/>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlResourceReader.ReportException(System.Xml.XmlNode,System.String,System.String,System.Exception)">
            <summary>
            Reports a parse error by loading a
            <see cref="T:YCH.Objects.ObjectsException"/> with helpful contextual
            information and throwing said exception.
            </summary>
            <remarks>
            <p>
            Derived classes can of course override this method in order to implement
            validators capable of displaying a full list of errors found in the
            definition.
            </p>
            </remarks>
            <param name="node">
            The node that triggered the parse error.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="message">
            A message about the error.
            </param>
            <param name="cause">
            The root cause of the parse error (if any - may be <see langword="null"/>).
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            <b>Always</b> throws an instance of this exception class, that will
            contain helpful contextual infomation about the parse error.
            </exception>
        </member>
        <member name="M:YCH.Objects.Factory.Xml.XmlResourceReader.ReportFatalException(System.Xml.XmlNode,System.String)">
            <summary>
            This method can be overwritten in order to implement validators
            capable of displaying a full list of errors found in the definition.
            </summary>
            <param name="node">
            The node that triggered the parse error.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.ObjectReader">
            <summary>
            The <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionReader"/>
            that contains the
            <see cref="T:YCH.Objects.Factory.Support.IObjectDefinitionRegistry"/>
            that is being (or is to be) populated with object definitions.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.ObjectDefinitionFactory">
            <summary>
            Gets or sets object definition factory to use.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.DefaultLazyInit">
            <summary>
            Are objects to be lazily initialised (Singletons only)?
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.DefaultDependencyCheck">
            <summary>
            Is the default dependency check on?
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.DefaultAutowire">
            <summary>
            Is autowiring to be performed?
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.Xml.XmlResourceReader.Resource">
            <summary>
            The resource being parsed.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.FactoryObjectNotInitializedException">
            <summary>
            Exception thrown if an
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> is not fully
            initialized, for example if it is involved in a circular reference.
            </summary>
            <remarks>
            <p>
            This is usually indicated by any of the variants of the
            <see cref="M:YCH.Objects.Factory.IObjectFactory.GetObject(System.String)"/>
            method returning <see langword="null"/>.
            </p>
            <p>
            A circular reference with an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            cannot be solved by eagerly caching singleton instances (as is the
            case with normal objects. The reason is that every
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> needs to be fully
            initialized before it can return the created object, while only specific
            normal objects need to be initialized - that is, if a collaborating object
            actually invokes them on initialization instead of just storing the reference.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: FactoryObjectNotInitializedException.cs,v 1.3 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectCreationException">
            <summary>
            Thrown when an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            encounters an error when attempting to create an object from an object
            definition.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectCreationException.cs,v 1.12 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String,System.String,System.String)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String,System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the 
            <see cref="T:YCH.Objects.Factory.ObjectCreationException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCreationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectCreationException.ObjectName">
            <summary>
            The name of the object that triggered the exception (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectCreationException.ResourceDescription">
            <summary>
            The description of the resource associated with the object (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectCreationException.Message">
            <summary>
            Describes the creation failure trace of this exception.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.FactoryObjectNotInitializedException.#ctor">
            <summary>
            Creates a new instance of the
            FactoryObjectNotInitializedException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.FactoryObjectNotInitializedException.#ctor(System.String)">
            <summary>
            Creates a new instance of the FactoryObjectNotInitializedException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.FactoryObjectNotInitializedException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the FactoryObjectNotInitializedException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.FactoryObjectNotInitializedException.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the
            FactoryObjectCircularReferenceException class.
            </summary>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.FactoryObjectNotInitializedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the FactoryObjectCircularReferenceException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            <summary>
            Exception thrown when an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            is asked for an object instance name for which it cannot find a definition.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: NoSuchObjectDefinitionException.cs,v 1.8 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
            <param name="name">
            Name of the missing object.
            </param>
            <param name="message">
            A further, detailed message describing the problem.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor(System.Type,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the missing object.
            </param>
            <param name="message">
            A further, detailed message describing the problem.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.NoSuchObjectDefinitionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.NoSuchObjectDefinitionException.ObjectType">
            <summary>
            Return the required <see cref="T:System.Type"/> of object, if it was a
            lookup by <see cref="T:System.Type"/> that failed.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.NoSuchObjectDefinitionException.ObjectName">
            <summary>
            Return the name of the missing object, if it was a lookup by name that
            failed.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectCurrentlyInCreationException">
            <summary>
            Thrown in case of a reference to an object that is currently in creation.
            </summary>
            <remarks>
            <p>
            Typically happens when constructor autowiring matches the currently
            constructed object.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans</author>
            <version>$Id: ObjectCurrentlyInCreationException.cs,v 1.5 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCurrentlyInCreationException.#ctor">
            <summary>
            Creates a new instance of the ObjectCurrentlyInCreationException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCurrentlyInCreationException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectCurrentlyInCreationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCurrentlyInCreationException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectCurrentlyInCreationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCurrentlyInCreationException.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the ObjectCurrentlyInCreationException class.
            </summary>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectCurrentlyInCreationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectCurrentlyInCreationException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectDefinitionException">
            <summary>
            Exception thrown when an <see cref="T:YCH.Objects.Factory.Xml.IXmlObjectDefinitionParser"/>
            encounters an error when attempting to parse an object
            definition.
            </summary>
            <author>Federico Spinazzi (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionException.#ctor">
            <summary>
            Creates a new instance of the ObjectDefinitionException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectDefinitionException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectDefinitionException class.
            </summary>
            <param name="name">
            The value of the xml <code>class</code> attribute thet can be resolved
            as a type
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectDefinitionException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectDefinitionException.Message">
            <summary>
            The message about the exception.
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectDefinitionStoreException">
            <summary>
            Thrown when an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            encounters an internal error, and its definitions are invalid.
            </summary>
            <remarks>
            <p>
            An example of a situation when this exception would be thrown is
            in the case of an XML document containing object definitions being
            malformed.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(System.String,System.String,System.String)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(YCH.Core.IO.IResource,System.String,System.String)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="resourceLocation">
            The resource location (e.g. an XML object definition file) associated
            with the offending object definition.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(YCH.Core.IO.IResource,System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="resourceLocation">
            The resource location (e.g. an XML object definition file) associated
            with the offending object definition.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(System.String,System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="name">
            The name of the object that triggered the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectDefinitionStoreException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectDefinitionStoreException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectDefinitionStoreException.ObjectName">
            <summary>
            The name of the object that triggered the exception (if any).
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectDefinitionStoreException.ResourceDescription">
            <summary>
            The description of the resource associated with the object (if any).
            </summary>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectFactoryUtils">
            <summary>
            Convenience methods operating on object factories, returning object instances,
            names, or counts.
            </summary>
            <remarks>
            <p>
            The nesting hierarchy of an object factory is taken into account by the various methods
            exposed by this class.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectFactoryUtils.cs,v 1.15 2006/04/09 07:18:48 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Factory.ObjectFactoryUtils.FactoryObjectPrefix">
            <summary>
            Used to dereference an <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            and distinguish it from managed objects <i>created by</i> the factory.
            </summary>
            <remarks>
            <p>
            For example, if the managed object identified as <code>foo</code> is a
            factory, getting <code>&amp;foo</code> will return the factory, not the
            instance returned by the factory.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectFactoryUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such has no publicly visible
            constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.CountObjectsIncludingAncestors(YCH.Objects.Factory.IListableObjectFactory)">
            <summary>
            Count all object definitions in any hierarchy in which this
            factory participates.
            </summary>
            <remarks>
            <p>
            Includes counts of ancestor object factories.
            </p>
            <p>
            Objects that are "overridden" (specified in a descendant factory
            with the same name) are counted only once.
            </p>
            </remarks>
            <param name="factory">The object factory.</param>
            <returns>
            The count of objects including those defined in ancestor factories.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectNamesIncludingAncestors(YCH.Objects.Factory.IListableObjectFactory)">
            <summary>
            Return all object names in the factory, including ancestor factories.
            </summary>
            <param name="factory">The object factory.</param>
            <returns>The array of object names, or an empty array if none.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectNamesForTypeIncludingAncestors(YCH.Objects.Factory.IListableObjectFactory,System.Type)">
            <summary>
            Get all object names for the given type, including those defined in ancestor
            factories.
            </summary>
            <remarks>
            <p>
            Will return unique names in case of overridden object definitions.
            </p>
            <p>
            Does consider objects created by <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s,
            or rather it considers the type of objects created by
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> (which means that
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/>s will be instantiated).
            </p>
            </remarks>
            <param name="factory">
            If this isn't also an
            <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>,
            this method will return the same as it's own
            <see cref="M:YCH.Objects.Factory.IListableObjectFactory.GetObjectDefinitionNames"/>
            method.
            </param>
            <param name="type">
            The <see cref="T:System.Type"/> that objects must match.
            </param>
            <returns>
            The array of object names, or an empty array if none.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectsOfTypeIncludingAncestors(YCH.Objects.Factory.IListableObjectFactory,System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return all objects of the given type or subtypes, also picking up objects
            defined in ancestor object factories if the current object factory is an
            <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>.
            </summary>
            <remarks>
            <p>
            The return list will only contain objects of this type.
            Useful convenience method when we don't care about object names.
            </p>
            </remarks>
            <param name="factory">The object factory.</param>
            <param name="type">The <see cref="T:System.Type"/> of object to match.</param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons
            (also applies to <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances
            too or just normal objects.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the objects could not be created.
            </exception>
            <returns>
            The <see cref="T:System.Collections.IDictionary"/> of object instances, or an
            empty <see cref="T:System.Collections.IDictionary"/> if none.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectOfTypeIncludingAncestors(YCH.Objects.Factory.IListableObjectFactory,System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return a single object of the given type or subtypes, also picking up objects defined
            in ancestor object factories if the current object factory is an
            <see cref="T:YCH.Objects.Factory.IHierarchicalObjectFactory"/>.
            </summary>
            <remarks>
            <p>
            Useful convenience method when we expect a single object and don't care
            about the object name.
            </p>
            </remarks>
            <param name="factory">The object factory.</param>
            <param name="type">The <see cref="T:System.Type"/> of object to match.</param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons
            (also applies to <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances
            too or just normal objects.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If more than one instance of an object was found.
            </exception>
            <returns>
            A single object of the given type or subtypes.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectOfType(YCH.Objects.Factory.IListableObjectFactory,System.Type,System.Boolean,System.Boolean)">
            <summary>
            Return a single object of the given type or subtypes, not looking in
            ancestor factories.
            </summary>
            <remarks>
            <p>
            Useful convenience method when we expect a single object and don't care
            about the object name.
            </p>
            </remarks>
            <param name="factory">The object factory.</param>
            <param name="type">The <see cref="T:System.Type"/> of object to match.</param>
            <param name="includePrototypes">
            Whether to include prototype objects too or just singletons
            (also applies to <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances).
            </param>
            <param name="includeFactoryObjects">
            Whether to include <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances
            too or just normal objects.
            </param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If not exactly one instance of an object was found.
            </exception>
            <returns>
            A single object of the given type or subtypes.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.ObjectOfType(YCH.Objects.Factory.IListableObjectFactory,System.Type)">
            <summary>
            Return a single object of the given type or subtypes, not looking in
            ancestor factories.
            </summary>
            <remarks>
            <p>
            Useful convenience method when we expect a single object and don't care
            about the object name.
            This version of <c>ObjectOfType</c> automatically includes prototypes and
            <see cref="T:YCH.Objects.Factory.IFactoryObject"/> instances.
            </p>
            </remarks>
            <param name="factory">The object factory.</param>
            <param name="type">The <see cref="T:System.Type"/> of object to match.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If the object could not be created.
            </exception>
            <exception cref="T:YCH.Objects.Factory.NoSuchObjectDefinitionException">
            If not exactly one instance of an object was found.
            </exception>
            <returns>
            A single object of the given type or subtypes.
            </returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.TransformedObjectName(System.String)">
            <summary>
            Return the object name, stripping out the factory dereference prefix if necessary.
            </summary>
            <param name="name">The name of the object.</param>
            <returns>The object name sans any factory dereference prefix.</returns>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.BuildFactoryObjectName(System.String)">
            <summary>
            Given an (object) name, builds a corresponding factory object name such that
            the return value can be used as a lookup name for a factory object.
            </summary>
            <param name="objectName">
            The name to be used to build the resulting factory object name.
            </param>
            <returns>
            The <paramref name="objectName"/> transformed into its factory object name
            equivalent.
            </returns>
            <seealso cref="M:YCH.Objects.Factory.ObjectFactoryUtils.TransformedObjectName(System.String)"/>
            <seealso cref="F:YCH.Objects.Factory.ObjectFactoryUtils.FactoryObjectPrefix"/>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectFactoryUtils.IsFactoryDereference(System.String)">
            <summary>
            Is the supplied <paramref name="name"/> a factory dereference?
            </summary>
            <remarks>
            <p>
            That is, does the supplied <paramref name="name"/> begin with
            the
            <see cref="F:YCH.Objects.Factory.ObjectFactoryUtils.FactoryObjectPrefix"/>?
            </p>
            </remarks>
            <param name="name">The name to check.</param>
            <returns>
            <see langword="true"/> if the supplied <paramref name="name"/> is a
            factory dereference; <see langword="false"/> if not, or the
            aupplied <paramref name="name"/> is <see langword="null"/> or
            consists solely of the
            <see cref="F:YCH.Objects.Factory.ObjectFactoryUtils.FactoryObjectPrefix"/>
            value.
            </returns>
            <seealso cref="F:YCH.Objects.Factory.ObjectFactoryUtils.FactoryObjectPrefix"/>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectInitializationException">
            <summary>
            Exception that an object implementation is suggested to throw if its own
            factory-aware initialization code fails.
            <see cref="T:YCH.Objects.ObjectsException"/> thrown by object factory methods
            themselves should simply be propagated as-is.
            </summary>
            <remarks>
            <p>
            Note that non-factory-aware initialization methods like AfterPropertiesSet ()
            or a custom "init-method" can throw any exception.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectInitializationException.#ctor">
            <summary>
            Creates a new instance of the ObjectInitializationException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectInitializationException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectInitializationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectInitializationException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectInitializationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectInitializationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectInitializationException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectIsAbstractException">
            <summary>
            Thrown in response to an attempt to retrieve an object from
            a factory where the definition for said object is marked as
            <b>abstract</b>.
            </summary>
            <remarks>
            <p>
            Note that this exception applies to object <b>definitions</b> that
            have been marked as <b>abstract</b>. This is distinct from class
            definitions that have been defined as <see langword="abstract"/>.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: ObjectIsAbstractException.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
            <seealso cref="P:YCH.Objects.Factory.Config.IObjectDefinition.IsAbstract"/>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsAbstractException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsAbstractException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsAbstractException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsAbstractException"/> class.
            </summary>
            <param name="name">
            The name of the object definition that has been marked
            as <b>abstract</b>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsAbstractException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsAbstractException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsAbstractException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsAbstractException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsAbstractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectIsNotAFactoryException">
            <summary>
            Thrown in response to an attempt to lookup a factory object, and
            the object identified by the lookup key is not a factory.
            </summary>
            <remarks>
            <p>
            An object is a factory if it implements (either directly or indirectly
            via inheritance) the <see cref="T:YCH.Objects.Factory.IFactoryObject"/>
            interface.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectIsNotAFactoryException.cs,v 1.5 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.Factory.ObjectNotOfRequiredTypeException">
            <summary>
            Thrown when an object doesn't match the required <see cref="T:System.Type"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Rick Evans (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.#ctor">
            <summary>
            Creates a new instance of the ObjectNotOfRequiredTypeException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.#ctor(System.String)">
            <summary>
            Creates a new instance of the ObjectNotOfRequiredTypeException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the ObjectNotOfRequiredTypeException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.#ctor(System.String,System.Type,System.Object)">
            <summary>
            Creates a new instance of the ObjectNotOfRequiredTypeException class.
            </summary>
            <param name="name">
            Name of the object requested.
            </param>
            <param name="requiredType">
            The required <see cref="T:System.Type"/> of the actual object
            instance that was retrieved.
            </param>
            <param name="actualInstance">
            The instance actually returned, whose class did not match the
            expected <see cref="T:System.Type"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the ObjectNotOfRequiredTypeException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.ActualType">
            <summary>
            The actual <see cref="T:System.Type"/> of the actual object
            instance that was retrieved.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.RequiredType">
            <summary>
            The required <see cref="T:System.Type"/> of the actual object
            instance that was retrieved.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.ActualInstance">
            <summary>
            The instance actually returned, whose class did not match the
            expected <see cref="T:System.Type"/>.
            </summary>
        </member>
        <member name="P:YCH.Objects.Factory.ObjectNotOfRequiredTypeException.ObjectName">
            <summary>
            The name of the object requested.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsNotAFactoryException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsNotAFactoryException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsNotAFactoryException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsNotAFactoryException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsNotAFactoryException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsNotAFactoryException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsNotAFactoryException.#ctor(System.String,System.Object)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsNotAFactoryException"/> class.
            </summary>
            <param name="name">
            The name of the object that was being retrieved from the factory.
            </param>
            <param name="actualInstance">
            The object instance that was retrieved.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.ObjectIsNotAFactoryException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Factory.ObjectIsNotAFactoryException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Factory.UnsatisfiedDependencyException">
            <summary>
            Exception thrown when an object depends on other objects or simple properties
            that were not specified in the object factory definition, although dependency
            checking was enabled.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: UnsatisfiedDependencyException.cs,v 1.8 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor(System.String)">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor(System.String,System.String,System.Int32,System.Type,System.String)">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="name">
            The name of the object that has the unsatisfied dependency.
            </param>
            <param name="argumentIndex">
            The constructor argument index at which the dependency is
            unsatisfied.
            </param>
            <param name="argumentType">
            The <see cref="T:System.Type"/> of the constructor argument at
            which the dependency is unsatisfied.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor(System.String,System.String,System.String,System.String)">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
            <param name="resourceDescription">
            The description of the resource associated with the object.
            </param>
            <param name="name">
            The name of the object that has the unsatisfied dependency.
            </param>
            <param name="propertyName">
            The name identifying the property on which the dependency is
            unsatisfied.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.Factory.UnsatisfiedDependencyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the UnsatisfiedDependencyException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.Support.AbstractEventHandlerValue">
            <summary>
            Base class implementation for classes that describe an event handler.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: AbstractEventHandlerValue.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Objects.IEventHandlerValue">
            <summary>
            Describes an event handler.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: IEventHandlerValue.cs,v 1.6 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.IEventHandlerValue.Wire(System.Object,System.Object)">
            <summary>
            Wires up the specified handler to the named event on the
            supplied event source.
            </summary>
            <param name="source">
            The object (an object instance, a <see cref="T:System.Type"/>, etc)
            exposing the named event.
            </param>
            <param name="handler">
            The handler for the event (an object instance, a
            <see cref="T:System.Type"/>, etc).
            </param>
        </member>
        <member name="P:YCH.Objects.IEventHandlerValue.Source">
            <summary>
            The source of the event.
            </summary>
        </member>
        <member name="P:YCH.Objects.IEventHandlerValue.MethodName">
            <summary>
            The name of the method that is going to handle the event.
            </summary>
        </member>
        <member name="P:YCH.Objects.IEventHandlerValue.EventName">
            <summary>
            The name of the event that is being wired up.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.AbstractEventHandlerValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AbstractEventHandlerValue"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.AbstractEventHandlerValue.#ctor(System.Object,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AbstractEventHandlerValue"/> class.
            </summary>
            <param name="source">
            The object (possibly unresolved) that is exposing the event.
            </param>
            <param name="methodName">
            The name of the method on the handler that is going to handle the event.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.AbstractEventHandlerValue.Wire(System.Object,System.Object)">
            <summary>
            Wires up the specified handler to the named event on the
            supplied event source.
            </summary>
            <param name="source">
            The object (an object instance, a <see cref="T:System.Type"/>, etc)
            exposing the named event.
            </param>
            <param name="handler">
            The handler for the event (an object instance, a
            <see cref="T:System.Type"/>, etc).
            </param>
        </member>
        <member name="M:YCH.Objects.Support.AbstractEventHandlerValue.ToString">
            <summary>
            Returns a stringified representation of this object.
            </summary>
            <returns>A stringified representation of this object.</returns>
        </member>
        <member name="P:YCH.Objects.Support.AbstractEventHandlerValue.Source">
            <summary>
            The source of the event (may be unresolved, as in the case
            of a <see cref="T:YCH.Objects.Factory.Config.RuntimeObjectReference"/>
            value).
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AbstractEventHandlerValue.MethodName">
            <summary>
            The name of the method that is going to handle the event.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AbstractEventHandlerValue.EventName">
            <summary>
            The name of the event that is being wired up.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.AbstractWiringEventHandlerValue">
            <summary>
            Base class for all <see cref="T:YCH.Objects.IEventHandlerValue"/>
            implemenations that actually perform event wiring.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: AbstractWiringEventHandlerValue.cs,v 1.8 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.AbstractWiringEventHandlerValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AbstractWiringEventHandlerValue"/> class.
            </summary>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.AbstractWiringEventHandlerValue.#ctor(System.Object,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AbstractWiringEventHandlerValue"/> class.
            </summary>
            <param name="source">
            The object (possibly unresolved) that is exposing the event.
            </param>
            <param name="methodName">
            The name of the method on the handler that is going to handle the event.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.AbstractWiringEventHandlerValue.Wire(System.Object,System.Object)">
            <summary>
            Wires up the specified handler to the named event on the
            supplied event source.
            </summary>
            <param name="source">
            The object (an object instance, a <see cref="T:System.Type"/>, etc)
            exposing the named event.
            </param>
            <param name="handler">
            The handler for the event (an object instance, a
            <see cref="T:System.Type"/>, etc).
            </param>
        </member>
        <member name="M:YCH.Objects.Support.AbstractWiringEventHandlerValue.GetHandler(System.Object,System.Reflection.EventInfo)">
            <summary>
            Gets the event handler.
            </summary>
            <param name="instance">
            The instance that is registering for the event notification.
            </param>
            <param name="info">
            Event metadata about the event.
            </param>
            <returns>
            The event handler.
            </returns>
        </member>
        <member name="M:YCH.Objects.Support.AbstractWiringEventHandlerValue.ResolveHandlerMethod(System.Type,System.Type,System.Reflection.BindingFlags)">
            <summary>
            Resolves the method metadata that describes the method that is to be used
            as the argument to a delegate constructor.
            </summary>
            <param name="handlerType">
            The <see cref="T:System.Type"/> exposing the method.
            </param>
            <param name="delegateType">
            The <see cref="T:System.Type"/> of the delegate (e.g. System.EventHandler).
            </param>
            <param name="flags">
            The custom binding flags to use when searching for the method.
            </param>
            <returns>The method metadata.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the method could not be found.
            </exception>
        </member>
        <member name="T:YCH.Objects.Support.AutoWiringEventHandlerValue">
            <summary>
            Describes an <see cref="T:YCH.Objects.IEventHandlerValue"/> implementation
            that autowires events to handler methods.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: AutoWiringEventHandlerValue.cs,v 1.10 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AutoWiringEventHandlerValue"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.Wire(System.Object,System.Object)">
            <summary>
            Wires up the specified handler to the named event on the supplied event source.
            </summary>
            <param name="source">
            The object (an object instance, a <see cref="T:System.Type"/>, etc)
            exposing the named event.
            </param>
            <param name="handler">
            The handler for the event (an object instance, a <see cref="T:System.Type"/>,
            etc).
            </param>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.MethodName">
            <summary>
            The name of the method that is going to handle the event.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer">
            <summary>
            Performs the matching up of handler methods to one or more source events.
            </summary>
            <remarks>
            <p>
            This class merely marshals the matching of handler methods to the events exposed
            by an event source, and then delegates to a concrete
            <see cref="T:YCH.Objects.IEventHandlerValue"/> implementation (such as
            <see cref="T:YCH.Objects.Support.InstanceEventHandlerValue"/> or
            <see cref="T:YCH.Objects.Support.StaticEventHandlerValue"/>) to do the heavy lifting of
            actually wiring a handler method to an event.
            </p>
            <p>
            Note : the order in which handler's are wired up to events is non-deterministic.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.#ctor(System.Object,System.String,System.Object,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer"/> class.
            </summary>
            <param name="source">
            The object exposing the event (s) being wired up.
            </param>
            <param name="eventName">
            The name of the event that is being wired up.
            </param>
            <param name="handler">
            The object exposing the method (s) being wired to the event.
            </param>
            <param name="methodName">
            The name of the method that is going to handle the event.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.Wire">
            <summary>
            Wires up events on the source to methods exposed on the handler.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.WireEvent(System.Reflection.EventInfo)">
            <summary>
            Wires up the supplied event to any handler methods that match the event
            signature.
            </summary>
            <param name="theEvent">The event being wired up.</param>
        </member>
        <member name="M:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.GetMethodNameCustomisedForEvent(System.String)">
            <summary>
            Only replaces the <b>first</b> occurrence of the placeholder.
            </summary>
            <param name="eventName">The event whose name is going to be used.</param>
            <returns>
            The method name customised for the name of the supplied event.
            </returns>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.Source">
            <summary>
            The object exposing the event (s) being wired up.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.Handler">
            <summary>
            The object exposing the method (s) being wired to an event source.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.HandlerType">
            <summary>
            The <see cref="T:System.Type"/> of the object that is handling any events.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.MethodName">
            <summary>
            The name of the method that is going to handle the event.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.AutoWiringEventHandlerValue.AutoWirer.EventName">
            <summary>
            The name of the event that is being wired up.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.ComposedCriteria">
            <summary>
            A <see cref="T:YCH.Core.ICriteria"/> implementation that represents
            a composed collection of <see cref="T:YCH.Core.ICriteria"/> instances.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.ComposedCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.ComposedCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.ComposedCriteria.#ctor(YCH.Core.ICriteria)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.ComposedCriteria"/> class.
            </summary>
            <param name="criteria">
            A user-defined (child) criteria that will be composed into this instance.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.ComposedCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The data to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="M:YCH.Objects.Support.ComposedCriteria.Add(YCH.Core.ICriteria)">
            <summary>
            Adds the supplied <parameref name="criteria"/> into the criteria
            composed within this instance.
            </summary>
            <param name="criteria">
            The <see cref="T:YCH.Core.ICriteria"/> to be added.
            </param>
        </member>
        <member name="P:YCH.Objects.Support.ComposedCriteria.Criteria">
            <summary>
            The list of <see cref="T:YCH.Core.ICriteria"/> composing this
            instance.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.CriteriaMemberFilter">
            <summary>
            Convenience class that exposes a signature that matches the
            <see cref="T:System.Reflection.MemberFilter"/> delegate.
            </summary>
            <remarks>
            <p>
            Useful when filtering <see cref="T:System.Type"/> members via the
            <see cref="T:YCH.Core.ICriteria"/> mechanism.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: CriteriaMemberFilter.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.CriteriaMemberFilter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.CriteriaMemberFilter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.CriteriaMemberFilter.FilterMemberByCriteria(System.Reflection.MemberInfo,System.Object)">
            <summary>
            Returns true if the supplied <see cref="T:System.Reflection.MemberInfo"/> instance
            satisfies the supplied <paramref name="filterCriteria"/> (which must be an
            <see cref="T:YCH.Core.ICriteria"/> implementation).
            </summary>
            <param name="member">
            The <see cref="T:System.Reflection.MemberInfo"/> instance that will be checked to see if
            it matches the supplied <paramref name="filterCriteria"/>.
            </param>
            <param name="filterCriteria">
            The criteria against which to filter the supplied
            <see cref="T:System.Reflection.MemberInfo"/> instance.
            </param>
            <returns>
            True if the supplied <see cref="T:System.Reflection.MemberInfo"/> instance
            satisfies the supplied <paramref name="filterCriteria"/> (which must be an
            <see cref="T:YCH.Core.ICriteria"/> implementation); false if not or the
            supplied <paramref name="filterCriteria"/> is not an
            <see cref="T:YCH.Core.ICriteria"/> implementation or is null.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.InstanceEventHandlerValue">
            <summary>
            Describes an event handler for an object instance.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: InstanceEventHandlerValue.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.InstanceEventHandlerValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.InstanceEventHandlerValue"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.InstanceEventHandlerValue.#ctor(System.Object,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.InstanceEventHandlerValue"/> class.
            </summary>
            <param name="source">
            The object (possibly unresolved) that is exposing the event.
            </param>
            <param name="methodName">
            The name of the method on the handler that is going to handle the event.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.InstanceEventHandlerValue.GetHandler(System.Object,System.Reflection.EventInfo)">
            <summary>
            Gets the event handler.
            </summary>
            <param name="instance">
            The instance that is registering for the event notification.
            </param>
            <param name="info">
            Event metadata about the event.
            </param>
            <returns>
            The event handler.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.ISortDefinition">
            <summary>
            Definition for sorting object instances by a property.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
        </member>
        <member name="P:YCH.Objects.Support.ISortDefinition.Property">
            <summary>
            The name of the property to sort by.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.ISortDefinition.IgnoreCase">
            <summary>
            Whether upper and lower case in string values should be ignored.
            </summary>
            <value>
            True if the sorting should be performed in a case-insensitive fashion.
            </value>
        </member>
        <member name="P:YCH.Objects.Support.ISortDefinition.Ascending">
            <summary>
            If the sorting should be ascending or descending.
            </summary>
            <value>
            True if the sorting should be in the ascending order.
            </value>
        </member>
        <member name="T:YCH.Objects.Support.MethodParametersCountCriteria">
            <summary>
            Criteria that is satisfied if the number of parameters to a given
            <see cref="T:System.Reflection.MethodBase"/> matches an arbitrary number.
            </summary>
            <remarks>
            <p>
            This class supports checking the parameter count of both methods and
            constructors.
            </p>
            <p>
            Default parameters, etc need to taken into account.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: MethodParametersCountCriteria.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCountCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodParametersCountCriteria"/> class.
            </summary>
            <remarks>
            <p>
            This constructor sets the
            <see cref="P:YCH.Objects.Support.MethodParametersCountCriteria.ExpectedParameterCount"/>
            property to zero (0).
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCountCriteria.#ctor(System.Int32)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodParametersCountCriteria"/> class.
            </summary>
            <param name="expectedParameterCount">
            The number of parameters that a <see cref="T:System.Reflection.MethodInfo"/>
            must have to satisfy this criteria.
            </param>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="expectedParameterCount"/> is less
            than zero.
            </exception>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCountCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="P:YCH.Objects.Support.MethodParametersCountCriteria.ExpectedParameterCount">
            <summary>
            The number of parameters that a <see cref="T:System.Reflection.MethodInfo"/>
            must have to satisfy this criteria.
            </summary>
            <exception cref="T:System.ArgumentException">
            If the supplied value is less than zero.
            </exception>
        </member>
        <member name="T:YCH.Objects.Support.MethodParametersCriteria">
            <summary>
            Criteria that is satisfied if the <see cref="T:System.Type"/> of each of the
            parameters of a given <see cref="T:System.Reflection.MethodInfo"/> matches each
            of the parameter <see cref="T:System.Type"/>s of a given
            <see cref="T:System.Reflection.MethodInfo"/>.
            </summary>
            <remarks>
            <p>
            If no <see cref="T:System.Type"/> array is passed to the overloaded constructor,
            any method that has no parameters will satisfy an instance of this
            class. The same effect could be achieved by passing the
            <see cref="F:System.Type.EmptyTypes"/> array to the overloaded constructor.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: MethodParametersCriteria.cs,v 1.9 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodParametersCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCriteria.#ctor(System.Type[])">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodParametersCriteria"/> class.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="parameters"/> array is null, then this
            constructor uses the <see cref="F:System.Type.EmptyTypes"/> array.
            </p>
            </remarks>
            <param name="parameters">
            The <see cref="T:System.Type"/> array that this criteria will use to
            check parameter <see cref="T:System.Type"/>s.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.MethodParametersCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <remarks>
            <p>
            This implementation respects the inheritance chain of any parameter
            <see cref="T:System.Type"/>s... i.e. methods that have a base type (or
            interface) that is assignable to the <see cref="T:System.Type"/> in the
            same corresponding index of the parameter types will satisfy this
            criteria instance.
            </p>
            </remarks>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.MethodReturnTypeCriteria">
            <summary>
            Criteria that is satisfied if the return <see cref="T:System.Type"/> of a given
            <see cref="T:System.Reflection.MethodInfo"/> matches a given <see cref="T:System.Type"/>.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: MethodReturnTypeCriteria.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Support.MethodReturnTypeCriteria.DefaultType">
            <summary>
            The return <see cref="T:System.Type"/> to match against if no
            <see cref="T:System.Type"/> is provided explictly.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.MethodReturnTypeCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodReturnTypeCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.MethodReturnTypeCriteria.#ctor(System.Type)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MethodReturnTypeCriteria"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> that the return type of a given
            <see cref="T:System.Reflection.MethodInfo"/> must match in order to satisfy
            this criteria.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.MethodReturnTypeCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="P:YCH.Objects.Support.MethodReturnTypeCriteria.ReturnType">
            <summary>
            The <see cref="T:System.Type"/> that the return type of a given
            <see cref="T:System.Reflection.MethodInfo"/> must match in order to satisfy
            this criteria.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.MutableSortDefinition">
            <summary>
            Mutable implementation of the
            <see cref="T:YCH.Objects.Support.ISortDefinition"/> interface that
            supports toggling the ascending value on setting the same property again.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Jean-Pierre Pawlak</author>
            <author>Simon White (.NET)</author>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MutableSortDefinition"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.#ctor(YCH.Objects.Support.ISortDefinition)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MutableSortDefinition"/> class using
            the specified <see cref="T:YCH.Objects.Support.ISortDefinition"/>.
            </summary>
            <param name="source">
            The <see cref="T:YCH.Objects.Support.ISortDefinition"/> to use
            as a source for initial property values.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.#ctor(System.String,System.Boolean,System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MutableSortDefinition"/> class.
            </summary>
            <param name="name">
            The name of the property to sort by.
            </param>
            <param name="ignoreCase">
            Whether upper and lower case in string values should be ignored.
            </param>
            <param name="ascending">
            Whether or not the sorting should be ascending or descending.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.#ctor(System.Boolean)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.MutableSortDefinition"/> class.
            </summary>
            <param name="toggleAscendingOnSameProperty">
            Whether or not the
            <see cref="P:YCH.Objects.Support.MutableSortDefinition.Ascending"/>
            property should be toggled if the same name is set on the
            <see cref="P:YCH.Objects.Support.MutableSortDefinition.Property"/>
            property.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.Equals(System.Object)">
            <summary>
            Overrides the default <see cref="M:System.Object.Equals(System.Object)"/> method
            </summary>
            <param name="obj">
            The object to test against this instance for equality.
            </param>
            <returns>
            True if the supplied <paramref name="obj"/> is equal to this instance.
            </returns>
        </member>
        <member name="M:YCH.Objects.Support.MutableSortDefinition.GetHashCode">
            <summary>
            Overrides the default <see cref="M:System.Object.GetHashCode"/> method.
            </summary>
            <returns>The hashcode for this instance.</returns>
        </member>
        <member name="P:YCH.Objects.Support.MutableSortDefinition.Property">
            <summary>
            The name of the property to sort by.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.MutableSortDefinition.IgnoreCase">
            <summary>
            Whether upper and lower case in string values should be ignored.
            </summary>
            <value>
            True if the sorting should be performed in a case-insensitive fashion.
            </value>
        </member>
        <member name="P:YCH.Objects.Support.MutableSortDefinition.Ascending">
            <summary>
            If the sorting should be ascending or descending.
            </summary>
            <value>
            True if the sorting should be in the ascending order.
            </value>
        </member>
        <member name="T:YCH.Objects.Support.ObjectFactoryHandler">
            <summary>
            Creates an <see cref="T:YCH.Objects.Factory.IObjectFactory"/> instance
            populated with the object definitions supplied in the configuration
            section. 
            </summary>
            <remarks>
            <p>
            Applications will typically want to use an
            <see cref="T:YCH.Context.IApplicationContext"/>, and instantiate it
            via the use of the <see cref="T:YCH.Context.Support.ContextHandler"/>
            class (which is similar in functionality to this class). This class is
            provided for those times when only an
            <see cref="T:YCH.Objects.Factory.IObjectFactory"/> is required.
            </p>
            </remarks>
            <example>
            <p>
            
            </p>
            </example>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: ObjectFactoryHandler.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.ObjectFactoryHandler.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.Support.ObjectFactoryHandler"/>
            class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.ObjectFactoryHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>
            Creates a <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            instance populated with the object definitions supplied in the
            configuration section.
            </summary>
            <param name="parent">
            The configuration settings in a corresponding parent configuration
            section.
            </param>
            <param name="configContext">
            The configuration context when called from the ASP.NET
            configuration system. Otherwise, this parameter is reserved and
            is <see langword="null"/>.
            </param>
            <param name="section">
            The <see cref="T:System.Xml.XmlNode"/> for the section.
            </param>
            <returns>
            A <see cref="T:YCH.Objects.Factory.IObjectFactory"/> instance
            populated with the object definitions supplied in the configuration
            section.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.PropertyComparator">
            <summary>
            Performs a comparison of two objects, using the specified object property via
            an <see cref="T:YCH.Objects.IObjectWrapper"/>.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Jean-Pierre Pawlak</author>
            <author>Simon White (.NET)</author>
            <version>$Id: PropertyComparator.cs,v 1.10 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.PropertyComparator.#ctor(YCH.Objects.Support.ISortDefinition)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.PropertyComparator"/> class.
            </summary>
            <param name="definition">
            The <see cref="T:YCH.Objects.Support.ISortDefinition"/> to use for any
            sorting.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="definition"/> is <cref lang="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.Support.PropertyComparator.Compare(System.Object,System.Object)">
            <summary>
            Compares two objects and returns a value indicating whether one is less
            than, equal to or greater than the other.
            </summary>
            <param name="o1">The first object to compare.</param>
            <param name="o2">The second object to compare.</param>
            <returns><see cref="M:System.Collections.IComparer.Compare(System.Object,System.Object)"/></returns>
        </member>
        <member name="M:YCH.Objects.Support.PropertyComparator.GetPropertyValue(System.Object)">
            <summary>
            Get the <see cref="T:YCH.Objects.Support.ISortDefinition"/>'s property
            value for the given object.
            </summary>
            <param name="obj">The object to get the property value for.</param>
            <returns>The property value.</returns>
        </member>
        <member name="M:YCH.Objects.Support.PropertyComparator.Sort(System.Collections.IList,YCH.Objects.Support.ISortDefinition)">
            <summary>
            Sort the given <see cref="T:System.Collections.IList"/> according to the
            given sort definition.
            </summary>
            <param name="source">
            The <see cref="T:System.Collections.IList"/> to be sorted.
            </param>
            <param name="sortDefinition">The parameters to sort by.</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            In the case of a missing property name.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="sortDefinition"/> is <cref lang="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.Support.PropertyComparator.SortDefinition">
            <summary>
            Gets the <see cref="T:YCH.Objects.Support.ISortDefinition"/> to
            use for any sorting.
            </summary>
            <value>
            The <see cref="T:YCH.Objects.Support.ISortDefinition"/> to	use for
            any sorting.
            </value>
        </member>
        <member name="T:YCH.Objects.Support.RegularExpressionCriteria">
            <summary>
            A base class for all <see cref="T:YCH.Core.ICriteria"/>
            implementations that are regular expression based.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: RegularExpressionCriteria.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Support.RegularExpressionCriteria.MatchAnyThingPattern">
            <summary>
            The default pattern... matches absolutely anything.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionCriteria.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionCriteria"/> class.
            </summary>
            <param name="pattern">
            The regular expression pattern to be applied.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionCriteria.IsMatch(System.String)">
            <summary>
            Convenience method that calls the
            <see cref="M:System.Text.RegularExpressions.Regex.IsMatch(System.String)"/>
            on the supplied <paramref name="input"/>.
            </summary>
            <param name="input">The input to match against.</param>
            <returns>True if the <paramref name="input"/> matches.</returns>
        </member>
        <member name="P:YCH.Objects.Support.RegularExpressionCriteria.Pattern">
            <summary>
            The regular expression pattern to be applied.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.RegularExpressionCriteria.Options">
            <summary>
            The regular expression options to be applied.
            </summary>
        </member>
        <member name="P:YCH.Objects.Support.RegularExpressionCriteria.Expression">
            <summary>
            The regular expression to be applied.
            </summary>
        </member>
        <member name="T:YCH.Objects.Support.RegularExpressionEventNameCriteria">
            <summary>
            Criteria that is satisfied if the <c>Name</c> property of an
            <see cref="T:System.Reflection.EventInfo"/> instance matches a
            supplied regular expression pattern.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: RegularExpressionEventNameCriteria.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Support.RegularExpressionEventNameCriteria.MatchAnyEventNamePattern">
            <summary>
            The default event name pattern... matches pretty much any event name.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionEventNameCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionEventNameCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionEventNameCriteria.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionEventNameCriteria"/> class.
            </summary>
            <param name="eventNamePattern">
            The pattern that <see cref="T:System.Reflection.EventInfo"/> names
            must match against in order to satisfy this criteria.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionEventNameCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.RegularExpressionMethodNameCriteria">
            <summary>
            Criteria that is satisfied if the <c>Name</c> property of an
            <see cref="T:System.Reflection.MethodInfo"/> instance matches a
            supplied regular expression pattern.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: RegularExpressionMethodNameCriteria.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.Support.RegularExpressionMethodNameCriteria.MatchAnyMethodNamePattern">
            <summary>
            The default method name pattern... matches pretty much any method name.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionMethodNameCriteria.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionMethodNameCriteria"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionMethodNameCriteria.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.RegularExpressionMethodNameCriteria"/> class.
            </summary>
            <param name="methodNamePattern">
            The pattern that <see cref="T:System.Reflection.MethodInfo"/> names
            must match against in order to satisfy this criteria.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.RegularExpressionMethodNameCriteria.IsSatisfied(System.Object)">
            <summary>
            Does the supplied <paramref name="datum"/> satisfy the criteria encapsulated by
            this instance?
            </summary>
            <param name="datum">The datum to be checked by this criteria instance.</param>
            <returns>
            True if the supplied <paramref name="datum"/> satisfies the criteria encapsulated
            by this instance; false if not or the supplied <paramref name="datum"/> is null.
            </returns>
        </member>
        <member name="T:YCH.Objects.Support.StaticEventHandlerValue">
            <summary>
            Describes an event handler for a static class method.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: StaticEventHandlerValue.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.Support.StaticEventHandlerValue.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.StaticEventHandlerValue"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.Support.StaticEventHandlerValue.#ctor(System.Object,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.Support.StaticEventHandlerValue"/> class.
            </summary>
            <param name="source">
            The object (possibly unresolved) that is exposing the event.
            </param>
            <param name="methodName">
            The name of the method on the handler that is going to handle the event.
            </param>
        </member>
        <member name="M:YCH.Objects.Support.StaticEventHandlerValue.GetHandler(System.Object,System.Reflection.EventInfo)">
            <summary>
            Gets the event handler.
            </summary>
            <param name="instance">
            The instance that is registering for the event notification.
            </param>
            <param name="info">
            Event metadata about the event.
            </param>
            <returns>
            The event handler.
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.CustomNumberConverter">
            <summary>
            A custom <see cref="T:System.ComponentModel.TypeConverter"/> for any
            primitive numeric type such as <see cref="T:System.Int32"/>,
            <see cref="T:System.Single"/>, <see cref="T:System.Double"/>, etc.
            </summary>
            <remarks>
            <p>
            Can use a given <see cref="T:System.Globalization.NumberFormatInfo"/> for
            (locale-specific) parsing and rendering.
            </p>
            <p>
            This is not meant to be used as a system
            <see cref="T:System.ComponentModel.TypeConverter"/> but rather as a
            locale-specific number converter within custom controller code, to
            parse user-entered number strings into number properties of objects,
            and render them in a UI form.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: CustomNumberConverter.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.CustomNumberConverter.#ctor(System.Type,System.Globalization.NumberFormatInfo,System.Boolean)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.TypeConverters.CustomNumberConverter"/>
            class.
            </summary>
            <param name="type">
            The primitive numeric <see cref="T:System.Type"/> to convert to.
            </param>
            <param name="format">
            The <see cref="T:System.Globalization.NumberFormatInfo"/> to use for
            (locale-specific) parsing and rendering
            </param>
            <param name="allowEmpty">
            Is an empty string allowed to be converted? If
            <see langword="true"/>, an empty string value will be converted to
            numeric 0.</param>
            <exception cref="T:System.ArgumentException">
            Id the supplied <paramref name="type"/> is not a primitive
            <see cref="T:System.Type"/>.
            </exception>
            <seealso cref="P:System.Type.IsPrimitive"/>
        </member>
        <member name="M:YCH.Objects.TypeConverters.CustomNumberConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a <see cref="T:System.IO.FileInfo"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>
            <see langword="true"/> if the conversion is possible.
            </returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.CustomNumberConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Converts the specified object (a string) to the required primitive
            type.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="val">
            The value that is to be converted.
            </param>
            <returns>A primitive representation of the string value.</returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.ExpressionConverter">
            <summary>
            Converts string representation of expression into an instance of <see cref="T:YCH.Expressions.IExpression"/>.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ExpressionConverter.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.ExpressionConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Can we convert from a the sourcetype to a <see cref="T:YCH.Expressions.IExpression"/>?
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns><see langword="true"/> if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.ExpressionConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a <see cref="T:System.String"/> value to an
            <see cref="T:YCH.Expressions.IExpression"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture.
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.String"/> array if successful.
            </returns>        
        </member>
        <member name="T:YCH.Objects.TypeConverters.FileInfoConverter">
            <summary>
            Converter for <see cref="T:System.IO.FileInfo"/> instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
        </member>
        <member name="M:YCH.Objects.TypeConverters.FileInfoConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.FileInfoConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.FileInfoConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a <see cref="T:System.IO.FileInfo"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.FileInfoConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a <see cref="T:System.IO.FileInfo"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.IO.FileInfo"/> if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.NameValueConverter">
            <summary>
            Custom <see cref="T:System.ComponentModel.TypeConverter"/> implementation for
            <see cref="T:System.Collections.Specialized.NameValueCollection"/> objects.
            </summary>
            <remarks>
            <p>
            Handles conversion from an <b>XML formatted string</b> to a
            <see cref="T:System.Collections.Specialized.NameValueCollection"/> object
            (see below for an example of the expected XML format).
            </p>
            <p>
            This converter must be registered before it will be available. Standard
            converters in this namespace are automatically registered by the
            <see cref="T:YCH.Objects.ObjectWrapper"/> class.
            </p>
            </remarks>
            <example>
            <p>
            Find below some examples of the XML formatted strings that this
            converter will sucessfully convert. Note that the name of the top level
            (document) element is quite arbitrary... it is only the content that
            matters (and which must be in the format
            <c>&lt;add key="..." value="..."/&gt;</c>. For your continued sanity
            though, you may wish to standardize on the top level name of
            <c>'dictionary'</c> (although you are of course free to not do so).
            </p>
            <code escaped="true">
            <dictionary>
            	<add key="host" value="localhost"/>
            	<add key="port" value="8080"/>
            </dictionary>
            </code>
            <p>
            The following example uses a different top level (document) element
            name, but is equivalent to the first example.
            </p>
            <code escaped="true">
            <web-configuration-parameters>
            	<add key="host" value="localhost"/>
            	<add key="port" value="8080"/>
            </web-configuration-parameters>
            </code>
            </example>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Simon White (.NET)</author>
            <version>$Id: NameValueConverter.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.NameValueConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.NameValueConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.NameValueConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a
            <see cref="T:System.Collections.Specialized.NameValueCollection"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from an
            <b>XML formatted</b> <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.NameValueConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a
            <see cref="T:System.Collections.Specialized.NameValueCollection"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.Collections.Specialized.NameValueCollection"/>
            if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.ResourceManagerConverter">
            <summary>
            Converts a two part string, (resource name, assembly name)
            to a ResourceManager instance.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.ResourceManagerConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.ResourceManagerConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.ResourceManagerConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a
            <see cref="T:System.Resources.ResourceManager"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.ResourceManagerConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a
            <see cref="T:System.Resources.ResourceManager"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.Resources.ResourceManager"/>
            if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.RGBColorConverter">
            <summary>
            Converter for <see cref="T:System.Drawing.Color"/> from a comma separated
            list of RBG values.
            </summary>
            <remarks>
            <p>
            Please note that this class does <b>not</b> implement converting
            to a comma separated list of RBG values from a
            <see cref="T:System.Drawing.Color"/>.
            </p>
            </remarks>
            <author>Federico Spinazzi</author>
            <version>$Id: RGBColorConverter.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RGBColorConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a 
            <see cref="T:System.Drawing.Color"/>.
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns><see langword="true"/> if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RGBColorConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Converts the specified object (a string) a <see cref="T:System.Drawing.Color"/>
            instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture: currently ignored.
            </param>
            <param name="value">
            The value that is to be converted, in "R,G,B", "A,R,G,B", or 
            symbolic color name (<see cref="T:System.Drawing.KnownColor"/>).
            </param>
            <returns>
            A <see cref="T:System.Drawing.Color"/> representation of the string value.
            </returns>
            <exception cref="T:System.FormatException">
            If the input string is not in a supported format, or is not one of the
            predefined system colors (<see cref="T:System.Drawing.KnownColor"/>).
            </exception>
        </member>
        <member name="T:YCH.Objects.TypeConverters.RuntimeTypeConverter">
            <summary>
            A custom <see cref="T:System.ComponentModel.TypeConverter"/> for
            runtime type references.
            </summary>
            <remarks>
            <p>
            Currently only supports conversion to and from a
            <see cref="T:System.String"/>.
            </p>
            </remarks>
            <author>Rick Evans (.NET)</author>
            <version>$Id: RuntimeTypeConverter.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RuntimeTypeConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.RuntimeTypeConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RuntimeTypeConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to the <see cref="T:System.Type"/>
            of this converter.
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RuntimeTypeConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert the object to the specified
            <see cref="T:System.Type"/>.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="destinationType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert to.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RuntimeTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Converts the given value to the type of this converter.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            An <see cref="T:System.Object"/> that represents the converted value.
            </returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.RuntimeTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type)">
            <summary>
            Converts the given value object to the specified type,
            using the specified context and culture information.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <param name="destinationType">
            The <see cref="T:System.Type"/> to convert the
            <paramref name="value"/> parameter to.
            </param>
            <returns>
            An <see cref="T:System.Object"/> that represents the converted value.
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.StreamConverter">
            <summary>
            Converter for <see cref="T:System.IO.Stream"/> to directly set a
            <see cref="T:System.IO.Stream"/> property.
            </summary>
            <author>Jurgen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StreamConverter.#ctor">
            <summary>
            Create a new StreamConverter using the default
            <see cref="T:YCH.Core.IO.ResourceConverter"/>.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StreamConverter.#ctor(YCH.Core.IO.ResourceConverter)">
            <summary>
            Create a new StreamConverter using the given
            <see cref="T:YCH.Core.IO.ResourceConverter"/>.
            </summary>
            <param name="resourceConverter">
            The <see cref="T:YCH.Core.IO.ResourceConverter"/> to use.</param>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StreamConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a <see cref="T:System.IO.Stream"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StreamConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a <see cref="T:System.IO.Stream"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="val">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.IO.Stream"/> if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.StringArrayConverter">
            <summary>
            Converts a separated <see cref="T:System.String"/> to a <see cref="T:System.String"/>
            array.
            </summary>
            <remarks>
            <p>
            Defaults to using the <c>,</c> (comma) as the list separator. Note that the value
            of the current <see cref="P:System.Globalization.CultureInfo.CurrentCulture"/> is
            <b>not</b> used.
            </p>
            <p>
            If you want to provide your own list separator, you can set the value of the
            <see cref="P:YCH.Objects.TypeConverters.StringArrayConverter.ListSeparator"/>
            property to the value that you want. Please note that this value will be used
            for <i>all</i> future conversions in preference to the default list separator.
            </p>
            <p>
            Please note that the individual elements of a string will be passed
            through <i>as is</i> (i.e. no conversion or trimming of surrounding
            whitespace will be performed).
            </p>
            <p>
            This <see cref="T:System.ComponentModel.TypeConverter"/> should be
            automatically registered with any <see cref="T:YCH.Objects.IObjectWrapper"/>
            implementations.
            </p>
            </remarks>
            <example>
            <code language="C#">
            public class StringArrayConverterExample 
            {     
                public static void Main()
                {
                    StringArrayConverter converter = new StringArrayConverter();
            		
            		string csvWords = "This,Is,It";
            		string[] frankBoothWords = converter.ConvertFrom(csvWords);
            
            		// the 'frankBoothWords' array will have 3 elements, namely
            		// "This", "Is", "It".
            		
            		// please note that extraneous whitespace is NOT trimmed off
            		// in the current implementation...
            		string csv = "  Cogito ,ergo ,sum ";
            		string[] descartesWords = converter.ConvertFrom(csv);
            		
            		// the 'descartesWords' array will have 3 elements, namely
            		// "  Cogito ", "ergo ", "sum ".
            		// notice how the whitespace has NOT been trimmed.
                }
            }
            </code>
            </example>
            <author></author>
            <version>$Id: StringArrayConverter.cs,v 1.13 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StringArrayConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Can we convert from a the sourcetype to a <see cref="T:System.String"/> array?
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns><see langword="true"/> if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.StringArrayConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a <see cref="T:System.String"/> value to a
            <see cref="T:System.String"/> array.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture.
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.String"/> array if successful.
            </returns>        
        </member>
        <member name="P:YCH.Objects.TypeConverters.StringArrayConverter.ListSeparator">
            <summary>
            The value that will be used as the list separator when performing
            conversions.
            </summary>
            <value>
            A 'single' string character that will be used as the list separator
            when performing conversions.
            </value>
            <exception cref="T:System.ArgumentException">
            If the supplied value is not <cref lang="null"/> and is an empty
            string, or has more than one character.
            </exception>
        </member>
        <member name="T:YCH.Objects.TypeConverters.TimeSpanConverter">
            <summary>
            Converter for <see cref="T:System.TimeSpan"/> instances.
            </summary>
            <author>Bruno Baia</author>
            <version>$Id: TimeSpanConverter.cs,v 1.1 2006/05/17 17:47:41 bbaia Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TimeSpanConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.TimeSpanConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TimeSpanConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a <see cref="T:System.TimeSpan"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.TimeSpan"/> if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.TypeConverters.TypeConverterRegistry">
            <summary>
            Registry class that allows users to register and retrieve type converters.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: TypeConverterRegistry.cs,v 1.5 2006/05/17 20:32:17 bbaia Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TypeConverterRegistry.#ctor">
            <summary>
            Creates a singleton instance of <see cref="T:YCH.Objects.TypeConverters.TypeConverterRegistry"/> and
            registers standard type converters.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TypeConverterRegistry.GetConverter(System.Type)">
            <summary>
            Returns <see cref="T:System.ComponentModel.TypeConverter"/> for the specified type.
            </summary>
            <param name="type">Type to get the converter for.</param>
            <returns>a type converter for the specified type.</returns>
            <exception cref="T:System.ArgumentNullException">If <paramref name="type"/> is <c>null</c>.</exception>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TypeConverterRegistry.RegisterConverter(System.Type,System.ComponentModel.TypeConverter)">
            <summary>
            Registers <see cref="T:System.ComponentModel.TypeConverter"/> for the specified type.
            </summary>
            <param name="type">Type to register the converter for.</param>
            <param name="converter">Type converter to register.</param>
            <exception cref="T:System.ArgumentNullException">If either of arguments is <c>null</c>.</exception>
        </member>
        <member name="M:YCH.Objects.TypeConverters.TypeConverterRegistry.RegisterConverter(System.String,System.String)">
            <summary>
            Registers <see cref="T:System.ComponentModel.TypeConverter"/> for the specified type.
            </summary>
            <remarks>
            This is a convinience method that accepts the names of both
            type to register converter for and the converter itself,
            resolves them using <see cref="T:YCH.Context.Support.TypeRegistry"/>, creates an
            instance of type converter and calls overloaded
            <see cref="M:YCH.Objects.TypeConverters.TypeConverterRegistry.RegisterConverter(System.Type,System.ComponentModel.TypeConverter)"/> method.
            </remarks>
            <param name="typeName">Type name of the type to register the converter for (can be a type alias).</param>
            <param name="converterTypeName">Type name of the type converter to register (can be a type alias).</param>
            <exception cref="T:System.ArgumentNullException">If either of arguments is <c>null</c> or empty string.</exception>
            <exception cref="T:System.TypeLoadException">
            If either of arguments fails to resolve to a valid <see cref="T:System.Type"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If type converter does not derive from <see cref="T:System.ComponentModel.TypeConverter"/> or if it cannot be instantiated.
            </exception>
        </member>
        <member name="T:YCH.Objects.TypeConverters.UriConverter">
            <summary>
            Converter for <see cref="T:System.Uri"/> instances.
            </summary>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: UriConverter.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.TypeConverters.UriConverter.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.TypeConverters.UriConverter"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeConverters.UriConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Type)">
            <summary>
            Returns whether this converter can convert an object of one
            <see cref="T:System.Type"/> to a <see cref="T:System.Uri"/>
            </summary>
            <remarks>
            <p>
            Currently only supports conversion from a
            <see cref="T:System.String"/> instance.
            </p>
            </remarks>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="sourceType">
            A <see cref="T:System.Type"/> that represents the
            <see cref="T:System.Type"/> you want to convert from.
            </param>
            <returns>True if the conversion is possible.</returns>
        </member>
        <member name="M:YCH.Objects.TypeConverters.UriConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object)">
            <summary>
            Convert from a string value to a <see cref="T:System.Uri"/> instance.
            </summary>
            <param name="context">
            A <see cref="T:System.ComponentModel.ITypeDescriptorContext"/>
            that provides a format context.
            </param>
            <param name="culture">
            The <see cref="T:System.Globalization.CultureInfo"/> to use
            as the current culture. 
            </param>
            <param name="value">
            The value that is to be converted.
            </param>
            <returns>
            A <see cref="T:System.Uri"/> if successful. 
            </returns>
        </member>
        <member name="T:YCH.Objects.InvalidPropertyException">
            <summary>
            Thrown in response to referring to an invalid property (most often via reflection).
            </summary>
            <author>Rick Evans</author>
            <version>$Id: InvalidPropertyException.cs,v 1.8 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.Type,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </param>
            <param name="propertyName">
            The name of the offending property.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.Type,System.String,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </param>
            <param name="propertyName">
            The name of the offending property.
            </param>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.Type,System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the InvalidPropertyException class.
            </summary>
            <param name="offendingType">
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </param>
            <param name="offendingProperty">
            The name of the offending property.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.InvalidPropertyException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.InvalidPropertyException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.InvalidPropertyException.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </summary>
        </member>
        <member name="P:YCH.Objects.InvalidPropertyException.OffendingPropertyName">
            <summary>
            The name of the offending property.
            </summary>
        </member>
        <member name="T:YCH.Objects.IObjectWrapper">
            <summary> 
            The central interface of YCH.NET's low-level object infrastructure.
            </summary>
            <remarks>
            <p>
            Typically not directly used by application code but rather implicitly
            via an <see cref="T:YCH.Objects.Factory.IObjectFactory"/>.
            </p>
            <p>
            Implementing classes have the ability to get and set property values
            (individually or in bulk), get property descriptors and query the
            readability and writability of properties.
            </p>
            <p>
            This interface supports <b>nested properties</b> enabling the setting
            of properties on subproperties to an unlimited depth.
            </p>
            <p>
            If a property update causes an exception, a
            <see cref="T:YCH.Objects.PropertyAccessException"/> will be thrown. Bulk
            updates continue after exceptions are encountered, throwing an exception
            wrapping <b>all</b> exceptions encountered during the update.
            </p>
            <p>
            <see cref="T:YCH.Objects.IObjectWrapper"/> implementations can be used
            repeatedly, with their "target" or wrapped object changed.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: IObjectWrapper.cs,v 1.13 2006/04/09 07:18:49 markpollack Exp $
            </version>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.GetPropertyValue(System.String)">
            <summary>Get the value of a property.</summary>
            <param name="theProperty">
            The name of the property to get the value of. May be nested.
            </param>
            <returns>The value of the property.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            if the property isn't readable, or if the getting the value throws
            an exception.
            </exception>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.GetPropertyInfo(System.String)">
            <summary>
            Get the <see cref="T:System.Reflection.PropertyInfo"/> for a particular
            property.
            </summary>
            <param name="theProperty">
            The property to be retrieved.
            </param>
            <returns>
            The <see cref="T:System.Reflection.PropertyInfo"/> for the particular
            property.
            </returns>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.GetPropertyType(System.String)">
            <summary>
            Get the <see cref="T:System.Type"/> for a particular property.
            </summary>
            <param name="theProperty">
            The property the <see cref="T:System.Type"/> of which is to be retrieved.
            </param>
            <returns>
            The <see cref="T:System.Type"/> for a particular property..
            </returns>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.GetPropertyInfos">
            <summary>
            Get all of the <see cref="T:System.Reflection.PropertyInfo"/> instances for
            all of the properties of the wrapped object.
            </summary>
            <returns>
            An array of <see cref="T:System.Reflection.PropertyInfo"/> instances.
            </returns>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.SetPropertyValue(YCH.Objects.PropertyValue)">
            <summary>
            Set a property value.
            </summary>
            <remarks>
            <p>
            <b>This is the preferred way to update an individual property.</b>
            </p>
            </remarks>
            <param name="propertyValue">The new property value.</param>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.SetPropertyValue(System.String,System.Object)">
            <summary>
            Set a property value.
            </summary>
            <remarks>
            <p>
            This method is provided for convenience only. The
            <see cref="M:YCH.Objects.IObjectWrapper.SetPropertyValue(YCH.Objects.PropertyValue)"/>
            method is more powerful.
            </p>
            </remarks>
            <param name="theProperty">
            The name of the property to set value of.
            </param>
            <param name="propertyValue">The new property value.</param>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues)">
            <summary>Set a number of property values in bulk.</summary>
            <remarks>
            <p>
            This is the preferred way to perform a bulk update.
            </p>
            <p>
            Note that performing a bulk update differs from performing a single update,
            in that an implementation of this class will continue to update properties
            if a <b>recoverable</b> error (such as a vetoed property change or a type
            mismatch, but <b>not</b> an invalid property name or the like) is
            encountered, throwing a
            <see cref="T:YCH.Objects.PropertyAccessExceptionsException"/> containing
            all the individual errors. This exception can be examined later to see all
            binding errors. Properties that were successfully updated stay changed.
            </p>
            <p>
            Does not allow the setting of unknown fields. Equivalent to
            <see cref="M:YCH.Objects.IObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)"/>
            with an argument of <c>false</c> for the second parameter.
            </p>
            </remarks>
            <param name="values">
            The collection of <see cref="T:YCH.Objects.PropertyValue"/> instances to
            set on the wrapped object.
            </param>
        </member>
        <member name="M:YCH.Objects.IObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)">
            <summary>
            Set a number of property values in bulk with full control over behavior.
            </summary>
            <remarks>
            <p>
            Note that performing a bulk update differs from performing a single update,
            in that an implementation of this class will continue to update properties
            if a <b>recoverable</b> error (such as a vetoed property change or a type
            mismatch, but <b>not</b> an invalid property name or the like) is
            encountered, throwing a
            <see cref="T:YCH.Objects.PropertyAccessExceptionsException"/> containing
            all the individual errors. This exception can be examined later to see all
            binding errors. Properties that were successfully updated stay changed.
            </p>
            <p>Does not allow the setting of unknown fields.
            </p>
            </remarks>
            <param name="values">
            The <see cref="T:YCH.Objects.IPropertyValues"/> to set on the target object
            </param>
            <param name="ignoreUnknown">
            Should we ignore unknown values (not found in the object!?)
            </param>
        </member>
        <member name="P:YCH.Objects.IObjectWrapper.WrappedInstance">
            <summary>
            The object wrapped by the wrapper (cannot be <see lang="null"/>).
            </summary>
            <remarks>
            <p>
            Implementations are required to allow the type of the wrapped 
            object to change.
            </p>
            </remarks>
            <returns>The object wrapped by this wrapper.</returns>
        </member>
        <member name="P:YCH.Objects.IObjectWrapper.WrappedType">
            <summary>
            Convenience method to return the <see cref="T:System.Type"/>
            of the wrapped object.
            </summary>
            <returns>The <see cref="T:System.Type"/> of the wrapped object.</returns>
        </member>
        <member name="T:YCH.Objects.IPropertyValues">
            <summary>
            A collection style container for <see cref="T:YCH.Objects.PropertyValue"/>
            instances.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET) </author>
            <version>$Id: IPropertyValues.cs,v 1.7 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.IPropertyValues.GetPropertyValue(System.String)">
            <summary>
            Return the <see cref="T:YCH.Objects.PropertyValue"/> instance with the
            given name.
            </summary>
            <param name="propertyName">The name to search for.</param>
            <returns>the <see cref="T:YCH.Objects.PropertyValue"/>, or null if a 
            the <see cref="T:YCH.Objects.PropertyValue"/> with the supplied
            <paramref name="propertyName"/> did not exist in this collection.
            </returns>
        </member>
        <member name="M:YCH.Objects.IPropertyValues.Contains(System.String)">
            <summary>
            Is there a <see cref="T:YCH.Objects.PropertyValue"/> instance for this
            property name?
            </summary>
            <param name="propertyName">The name to search for.</param>
            <returns>
            True if there is a <see cref="T:YCH.Objects.PropertyValue"/> instance for
            the supplied <paramref name="propertyName"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.IPropertyValues.ChangesSince(YCH.Objects.IPropertyValues)">
            <summary>
            Return the difference (changes, additions, but not removals) of
            property values between the supplied argument and the values
            contained in the collection.
            </summary>
            <remarks>
            <p>
            Subclasses should also override <c>Equals</c>.
            </p>
            </remarks>
            <param name="old">The old property values.</param>
            <returns>
            An <see cref="T:YCH.Objects.IPropertyValues"/> containing any changes, or
            an empty <see cref="T:YCH.Objects.IPropertyValues"/> instance if there were
            no changes.
            </returns>
        </member>
        <member name="P:YCH.Objects.IPropertyValues.PropertyValues">
            <summary>
            Return an array of the <see cref="T:YCH.Objects.PropertyValue"/> objects
            held in this object.</summary>
            <returns>
            An array of the <see cref="T:YCH.Objects.PropertyValue"/> objects held
            in this object.
            </returns>
        </member>
        <member name="T:YCH.Objects.MethodInvocationException">
            <summary>
            Thrown when a method (typically a property getter or setter invoked via reflection)
            throws an exception, analogous to a <see cref="T:System.Reflection.TargetInvocationException"/>.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>  $Id: MethodInvocationException.cs,v 1.6 2006/04/09 07:18:49 markpollack Exp $
            </version>
        </member>
        <member name="T:YCH.Objects.PropertyAccessException">
            <summary>
            Superclass for exceptions related to a property access, such as a <see cref="T:System.Type"/>
            mismatch or a target invocation exception.
            </summary>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: PropertyAccessException.cs,v 1.9 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor(System.String,YCH.Objects.PropertyChangeEventArgs)">
            <summary>
            Create a new instance of the PropertyAccessException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="propertyChangeEvent">Describes the change attempted on the property.</param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor(System.String,YCH.Objects.PropertyChangeEventArgs,System.Exception)">
            <summary>
            Create a new instance of the PropertyAccessException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="propertyChangeEvent">Describes the change attempted on the property.</param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor">
            <summary>
            Creates a new instance of the PropertyAccessException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor(System.String)">
            <summary>
            Creates a new instance of the PropertyAccessException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="P:YCH.Objects.PropertyAccessException.PropertyChangeArgs">
            <summary>
            Returns the PropertyChangeEventArgs that resulted in the problem.
            </summary>
        </member>
        <member name="P:YCH.Objects.PropertyAccessException.ErrorCode">
            <summary>
            The string error code used to classify the error.
            </summary>
        </member>
        <member name="M:YCH.Objects.MethodInvocationException.#ctor">
            <summary>
            Creates a new instance of the MethodInvocationException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.MethodInvocationException.#ctor(System.String)">
            <summary>
            Creates a new instance of the MethodInvocationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.MethodInvocationException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the MethodInvocationException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.MethodInvocationException.#ctor(System.Exception,YCH.Objects.PropertyChangeEventArgs)">
            <summary>
            Constructor to use when an exception results from a
            <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/>.
            </summary>
            <param name="ex">
            The <see cref="T:System.Exception"/> raised by the invoked property.
            </param>
            <param name="argument">
            The <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> that
            resulted in an exception.
            </param>
        </member>
        <member name="M:YCH.Objects.MethodInvocationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the MethodInvocationException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="P:YCH.Objects.MethodInvocationException.ErrorCode">
            <summary>
            The error code string for this exception.
            </summary>
        </member>
        <member name="T:YCH.Objects.MutablePropertyValues">
            <summary>
            Default implementation of the <see cref="T:YCH.Objects.IPropertyValues"/>
            interface.
            </summary>
            <remarks>
            <p>
            Allows simple manipulation of properties, and provides constructors to
            support deep copy and construction from a number of collection types such as
            <see cref="T:System.Collections.IDictionary"/> and
            <see cref="T:System.Collections.IList"/>.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: MutablePropertyValues.cs,v 1.13 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.MutablePropertyValues.propertyValuesList">
            <summary>
            The list of <see cref="T:YCH.Objects.PropertyValue"/> objects.
            </summary>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.MutablePropertyValues"/>
            class.
            </summary>
            <remarks>
            <p>
            The returned instance is initially empty...
            <see cref="T:YCH.Objects.PropertyValue"/>s can be added with the various
            overloaded <see cref="M:YCH.Objects.MutablePropertyValues.Add(YCH.Objects.PropertyValue)"/>,
            <see cref="M:YCH.Objects.MutablePropertyValues.Add(System.String,System.Object)"/>,
            <see cref="M:YCH.Objects.MutablePropertyValues.AddAll(System.Collections.IDictionary)"/>,
            and <see cref="M:YCH.Objects.MutablePropertyValues.AddAll(System.Collections.IList)"/>
            methods.
            </p>
            </remarks>
            <seealso cref="M:YCH.Objects.MutablePropertyValues.Add(YCH.Objects.PropertyValue)"/>
            <seealso cref="M:YCH.Objects.MutablePropertyValues.Add(System.String,System.Object)"/>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.#ctor(YCH.Objects.IPropertyValues)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.MutablePropertyValues"/>
            class.
            </summary>
            <remarks>
            <p>
            Deep copy constructor. Guarantees <see cref="T:YCH.Objects.PropertyValue"/>
            references are independent, although it can't deep copy objects currently
            referenced by individual <see cref="T:YCH.Objects.PropertyValue"/> objects.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.#ctor(System.Collections.IDictionary)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.MutablePropertyValues"/>
            class.
            </summary>
            <param name="map">
            The <see cref="T:System.Collections.IDictionary"/> with property values
            keyed by property name, which must be a <see cref="T:System.String"/>.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.Add(System.String,System.Object)">
            <summary>
            Overloaded version of <c>Add</c> that takes a property name and a property value.
            </summary>
            <param name="propertyName">
            The name of the property.
            </param>
            <param name="propertyValue">
            The value of the property.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.Add(YCH.Objects.PropertyValue)">
            <summary>
            Add the supplied <see cref="T:YCH.Objects.PropertyValue"/> object,
            replacing any existing one for the respective property.
            </summary>
            <param name="pv">
            The <see cref="T:YCH.Objects.PropertyValue"/> object to add.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.AddAll(System.Collections.IDictionary)">
            <summary>
            Add all property values from the given
            <see cref="T:System.Collections.IDictionary"/>.
            </summary>
            <param name="map">
            The map of property values, the keys of which must be
            <see cref="T:System.String"/>s.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.AddAll(System.Collections.IList)">
            <summary>
            Add all property values from the given
            <see cref="T:System.Collections.IList"/>.
            </summary>
            <param name="values">
            The list of <see cref="T:YCH.Objects.PropertyValue"/>s to be added.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.Remove(YCH.Objects.PropertyValue)">
            <summary>
            Remove the given <see cref="T:YCH.Objects.PropertyValue"/>, if contained.
            </summary>
            <param name="pv">
            The <see cref="T:YCH.Objects.PropertyValue"/> to remove.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.Remove(System.String)">
            <summary>
            Removes the named <see cref="T:YCH.Objects.PropertyValue"/>, if contained.
            </summary>
            <param name="propertyName">
            The name of the property.
            </param>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.SetPropertyValueAt(YCH.Objects.PropertyValue,System.Int32)">
            <summary>
            Modify a <see cref="T:YCH.Objects.PropertyValue"/> object held in this object. Indexed from 0.
            </summary>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.GetPropertyValue(System.String)">
            <summary>
            Return the property value given the name.
            </summary>
            <remarks>
            The property name is checked in a <c>case-insensitive</c> fashion.
            </remarks>
            <param name="propertyName">
            The name of the property.
            </param>
            <returns>
            The property value.
            </returns>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.Contains(System.String)">
            <summary>
            Does the container of properties contain one of this name.
            </summary>
            <param name="propertyName">The name of the property to search for.</param>
            <returns>
            True if the property is contained in this collection, false otherwise.
            </returns>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.ChangesSince(YCH.Objects.IPropertyValues)">
            <summary>
            Return the difference (changes, additions, but not removals) of
            property values between the supplied argument and the values
            contained in the collection.
            </summary>
            <param name="old">Another property values collection.</param>
            <returns>
            The collection of property values that are different than the supplied one.
            </returns>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.GetEnumerator">
            <summary>
            Returns an <see cref="T:System.Collections.IEnumerator"/> that can iterate
            through a collection.
            </summary>
            <remarks>
            <p>
            The returned <see cref="T:System.Collections.IEnumerator"/> is the
            <see cref="T:System.Collections.IEnumerator"/> exposed by the
            <see cref="P:YCH.Objects.MutablePropertyValues.PropertyValues"/>
            property.
            </p>
            </remarks>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can iterate through a
            collection.
            </returns>
        </member>
        <member name="M:YCH.Objects.MutablePropertyValues.ToString">
            <summary>
            Convert the object to a string representation.
            </summary>
            <returns>
            A string representation of the object.
            </returns>
        </member>
        <member name="P:YCH.Objects.MutablePropertyValues.PropertyValues">
            <summary>
            Property to retrieve the array of property values.
            </summary>
        </member>
        <member name="T:YCH.Objects.NotReadablePropertyException">
            <summary>
            Thrown in response to a failed attempt to read a property.
            </summary>
            <remarks>
            <p>
            Typically thrown when attempting to read the value of a write-only
            property via reflection.
            </p>
            </remarks>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: NotReadablePropertyException.cs,v 1.4 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.NotReadablePropertyException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NotReadablePropertyException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.NotReadablePropertyException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NotReadablePropertyException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.NotReadablePropertyException.#ctor(System.Type,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NotReadablePropertyException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </param>
            <param name="propertyName">
            The name of the offending property.
            </param>
        </member>
        <member name="M:YCH.Objects.NotReadablePropertyException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NotReadablePropertyException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.NotReadablePropertyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NotReadablePropertyException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.NotWritablePropertyException">
            <summary>
            Thrown in response to a failed attempt to write a property.
            </summary>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: NotWritablePropertyException.cs,v 1.8 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor">
            <summary>
            Creates a new instance of the NotWritablePropertyException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.String)">
            <summary>
            Creates a new instance of the NotWritablePropertyException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the NotWritablePropertyException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.Type,System.String,System.String,System.Exception)">
            <summary>
            Creates a new instance of the NotWritablePropertyException class.
            </summary>
            <param name="offendingType">
            The <see cref="T:System.Type"/> that is (or rather was) the source of the
            offending property.
            </param>
            <param name="offendingProperty">
            The name of the offending property.
            </param>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.String,System.Type)">
            <summary>
            Creates a new instance of the NotWritablePropertyException class
            summarizing what property was not writable.
            </summary>
            <param name="offendingProperty">
            The name of the property that is not writable.
            </param>
            <param name="offendingType">
            The <see cref="T:System.Type"/> in which the property is not writable.
            </param>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.String,System.Type,System.Exception)">
            <summary>
            Creates new NotWritablePropertyException with a root cause.
            </summary>
            <param name="offendingProperty">
            The name of the property that is not writable.
            </param>
            <param name="offendingType">
            The <see cref="T:System.Type"/> in which the property is not writable.
            </param>
            <param name="rootCause">
            The root cause indicating why the property was not writable.
            </param>
        </member>
        <member name="M:YCH.Objects.NotWritablePropertyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the NotWritablePropertyException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Objects.NullValueInNestedPathException">
            <summary>
            Thrown in response to encountering a <see langword="null"/> value
            when traversing a nested path expression.
            </summary>
            <version>$Id: NullValueInNestedPathException.cs,v 1.10 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor(System.Type,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object where the property was not found.
            </param>
            <param name="theProperty">The name of the property not found.</param>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor(System.Type,System.String,System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> of the object where the property was not found.
            </param>
            <param name="theProperty">The name of the property not found.</param>
            <param name="message">A message about the exception.</param>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.NullValueInNestedPathException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.NullValueInNestedPathException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="P:YCH.Objects.NullValueInNestedPathException.PropertyName">
            <summary>
            The name of the offending property.
            </summary>
        </member>
        <member name="P:YCH.Objects.NullValueInNestedPathException.ObjectType">
            <summary>
            The <see cref="T:System.Type"/> of the class where the property was last looked for.
            </summary>
        </member>
        <member name="T:YCH.Objects.ObjectUtils">
            <summary>
            Helper methods with regard to objects, types, properties, etc.
            </summary>
            <remarks>
            <p>
            Not intended to be used directly by applications.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: ObjectUtils.cs,v 1.25 2006/05/05 22:12:07 bbaia Exp $</version>
        </member>
        <member name="F:YCH.Objects.ObjectUtils.EmptyObjects">
            <summary>
            An empty object array.
            </summary>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Objects.ObjectUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.InstantiateType(System.Type)">
            <summary>
            Convenience method to instantiate a <see cref="T:System.Type"/> using
            its no-arg constructor.
            </summary>
            <remarks>
            <p>
            As this method doesn't try to instantiate <see cref="T:System.Type"/>s
            by name, it should avoid <see cref="T:System.Type"/> loading issues.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to instantiate</param>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the <see cref="T:System.Type"/> Cannot be instantiated.
            </exception>
            <returns>A new instance of the <see cref="T:System.Type"/>.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the <paramref name="type"/> is <see langword="null"/>, or if the
            invocation of the <paramref name="type"/>s default (no-arg) constructor
            fails (due to invalid arguments, insufficient permissions, etc).
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.InstantiateType(System.Reflection.ConstructorInfo,System.Object[])">
            <summary>
            Convenience method to instantiate a <see cref="T:System.Type"/> using
            the given constructor.
            </summary>
            <remarks>
            <p>
            As this method doesn't try to instantiate <see cref="T:System.Type"/>s
            by name, it should avoid <see cref="T:System.Type"/> loading issues.
            </p>
            </remarks>
            <param name="constructor">
            The constructor to use for the instantiation.
            </param>
            <param name="arguments">
            The arguments to be passed to the constructor.
            </param>
            <returns>A new instance.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the <paramref name="constructor"/> is <see langword="null"/>, or if the
            invocation of the <paramref name="constructor"/> fails (due to invalid
            arguments, insufficient permissions, etc).
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.IsAssignableAndNotTransparentProxy(System.Type,System.Object)">
            <summary>
            Checks whether the supplied <paramref name="instance"/> is not a transparent proxy and is
            assignable to the supplied <paramref name="type"/>. 
            </summary>
            <remarks>
            <p>
            Neccessary when dealing with server-activated remote objects, because the
            object is of the type TransparentProxy and regular <c>is</c> testing for assignable
            types does not work.
            </p>
            <p>
            Transparent proxy instances always return <see langword="true"/> when tested
            with the <c>'is'</c> operator (C#). This method only checks if the object
            is assignable to the type if it is not a transparent proxy.
            </p>
            </remarks>
            <param name="type">The target <see cref="T:System.Type"/> to be checked.</param>
            <param name="instance">The value that should be assigned to the type.</param>
            <returns>
            <see langword="true"/> if the supplied <paramref name="instance"/> is not a
            transparent proxy and is assignable to the supplied <paramref name="type"/>.
            </returns>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.IsAssignable(System.Type,System.Object)">
            <summary>
            Determine if the given <see cref="T:System.Type"/> is assignable from the
            given value, assuming setting by reflection.
            </summary>
            <remarks>
            <p>
            Considers primitive wrapper classes as assignable to the
            corresponding primitive types.
            </p>
            <p>
            For example used in an object factory's constructor resolution.
            </p>
            </remarks>
            <param name="type">The target <see cref="T:System.Type"/>.</param>
            <param name="obj">The value that should be assigned to the type.</param>
            <returns>True if the type is assignable from the value.</returns>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.IsSimpleProperty(System.Type)">
            <summary>
            Check if the given <see cref="T:System.Type"/> represents a
            "simple" property,
            i.e. a primitive, a <see cref="T:System.String"/>, a
            <see cref="T:System.Type"/>, or a corresponding array.
            </summary>
            <remarks>
            <p>
            Used to determine properties to check for a "simple" dependency-check.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to check.
            </param>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.IsPrimitiveArray(System.Type)">
            <summary>
            Check if the given class represents a primitive array,
            i.e. boolean, byte, char, short, int, long, float, or double.
            </summary>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.ResolveType(System.String)">
            <summary>
            Resolves the supplied type name into a <see cref="T:System.Type"/>
            instance.
            </summary>
            <remarks>
            <p>
            If you require special <see cref="T:System.Type"/> resolution, do
            <b>not</b> use this method, but rather instantiate
            your own <see cref="T:YCH.Util.TypeResolver"/>.
            </p>
            </remarks>
            <param name="typeName">
            The (possibly partially assembly qualified) name of a
            <see cref="T:System.Type"/>.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/> instance.
            </returns>
            <exception cref="T:System.TypeLoadException">
            If the type cannot be resolved.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.NullSafeEquals(System.Object,System.Object)">
            <summary>
            Determine if the given objects are equal, returning <see langword="true"/>
            if both are <see langword="null"/> respectively <see langword="false"/>
            if only one is <see langword="null"/>.
            </summary>
            <param name="o1">The first object to compare.</param>
            <param name="o2">The second object to compare.</param>
            <returns>
            <see langword="true"/> if the given objects are equal.
            </returns>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.EnumerateFirstElement(System.Collections.IEnumerator)">
            <summary>
            Returns the first element in the supplied <paramref name="enumerator"/>.
            </summary>
            <param name="enumerator">
            The <see cref="T:System.Collections.IEnumerator"/> to use to enumerate
            elements.
            </param>
            <returns>
            The first element in the supplied <paramref name="enumerator"/>.
            </returns>
            <exception cref="T:System.IndexOutOfRangeException">
            If the supplied <paramref name="enumerator"/> did not have any elements.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.EnumerateFirstElement(System.Collections.IEnumerable)">
            <summary>
            Returns the first element in the supplied <paramref name="enumerable"/>.
            </summary>
            <param name="enumerable">
            The <see cref="T:System.Collections.IEnumerable"/> to use to enumerate
            elements.
            </param>
            <returns>
            The first element in the supplied <paramref name="enumerable"/>.
            </returns>
            <exception cref="T:System.IndexOutOfRangeException">
            If the supplied <paramref name="enumerable"/> did not have any elements.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="enumerable"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.EnumerateElementAtIndex(System.Collections.IEnumerator,System.Int32)">
            <summary>
            Returns the element at the specified index using the supplied
            <paramref name="enumerator"/>.
            </summary>
            <param name="enumerator">
            The <see cref="T:System.Collections.IEnumerator"/> to use to enumerate
            elements until the supplied <paramref name="index"/> is reached.
            </param>
            <param name="index">
            The index of the element in the enumeration to return.
            </param>
            <returns>
            The element at the specified index using the supplied
            <paramref name="enumerator"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the supplied <paramref name="index"/> was less than zero, or the
            supplied <paramref name="enumerator"/> did not contain enough elements
            to be able to reach the supplied <paramref name="index"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.EnumerateElementAtIndex(System.Collections.IEnumerable,System.Int32)">
            <summary>
            Returns the element at the specified index using the supplied
            <paramref name="enumerable"/>.
            </summary>
            <param name="enumerable">
            The <see cref="T:System.Collections.IEnumerable"/> to use to enumerate
            elements until the supplied <paramref name="index"/> is reached.
            </param>
            <param name="index">
            The index of the element in the enumeration to return.
            </param>
            <returns>
            The element at the specified index using the supplied
            <paramref name="enumerable"/>.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            If the supplied <paramref name="index"/> was less than zero, or the
            supplied <paramref name="enumerable"/> did not contain enough elements
            to be able to reach the supplied <paramref name="index"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="enumerable"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectUtils.InvokeMethod(System.Reflection.MethodInfo,System.Object,System.Object[])">
            <summary>
            Convenience method that uses reflection to invoke 
            a method using the given <see cref="T:System.Reflection.MethodInfo"/>.
            </summary>
            <remarks>
            <p>
            This method catch the <see cref="T:System.Reflection.TargetInvocationException"/> 
            and then re-throw the InnerException preserving the stack trace.
            </p>
            </remarks>
            <param name="method">
            The <see cref="T:System.Reflection.MethodInfo"/> to invoke.
            </param>
            <param name="instance">
            The target object instance on which to invoke the method.
            Ignored if the method is static.
            </param>
            <param name="arguments">
            The arguments to be passed to the method.
            </param>
            <returns>The return value of the invoked method</returns>
            <exception cref="T:System.Exception">
            If invoking the method resulted in an exception.
            </exception>
        </member>
        <member name="T:YCH.Objects.ObjectWrapper">
            <summary>
            Default implementation of the <see cref="T:YCH.Objects.IObjectWrapper"/>
            interface that should be sufficient for all normal uses.
            </summary>
            <remarks>
            <p>
            <see cref="T:YCH.Objects.ObjectWrapper"/> will convert
            <see cref="T:System.Collections.IList"/> and array
            values to the corresponding target arrays, if necessary. Custom
            <see cref="T:System.ComponentModel.TypeConverter"/>s that deal with
            <see cref="T:System.Collections.IList"/>s or arrays can be written against a
            comma delimited <see cref="T:System.String"/> as <see cref="T:System.String"/>
            arrays are converted in such a format if the array itself is not assignable.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller </author>
            <author>Jean-Pierre Pawlak</author>
            <author>Mark Pollack (.NET)</author>
            <author>Aleksandar Seovic(.NET)</author>
            <version>$Id: ObjectWrapper.cs,v 1.60 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Objects.ObjectWrapper.wrappedObject">
            <summary>The wrapped object.</summary>
        </member>
        <member name="F:YCH.Objects.ObjectWrapper.log">
            <summary>
            The ILog instance for this class. We'll create a lot of these objects,
            so we don't want a new instance every time.
            </summary>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.#ctor">
            <summary> 
            Creates a new instance of the <see cref="T:YCH.Objects.ObjectWrapper"/> class.
            </summary>
            <remarks>
            <p>
            The wrapped target instance will need to be set afterwards.
            </p>
            </remarks>
            <seealso cref="P:YCH.Objects.ObjectWrapper.WrappedInstance"/> 
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.#ctor(System.Object)">
            <summary> 
            Creates a new instance of the <see cref="T:YCH.Objects.ObjectWrapper"/> class.
            </summary>
            <param name="instance">
            The object wrapped by this <see cref="T:YCH.Objects.ObjectWrapper"/>.
            </param>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the supplied <paramref name="instance"/> is <see lang="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.#ctor(System.Type)">
            <summary> 
            Creates a new instance of the <see cref="T:YCH.Objects.ObjectWrapper"/> class,
            instantiating a new instance of the specified <see cref="T:System.Type"/> and using
            it as the <see cref="P:YCH.Objects.ObjectWrapper.WrappedInstance"/>.
            </summary>
            <remarks>
            <p>
            Please note that the <see cref="T:System.Type"/> passed as the
            <paramref name="type"/> argument must have a no-argument constructor.
            If it does not, an exception will be thrown when this class attempts
            to instantiate the supplied <paramref name="type"/> using it's
            (non-existent) constructor.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to instantiate and wrap.
            </param>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the <paramref name="type"/> is <see langword="null"/>, or if the
            invocation of the <paramref name="type"/>s default (no-arg) constructor
            fails (due to invalid arguments, insufficient permissions, etc).
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.GetPropertyValue(System.String)">
            <summary>Gets the value of a property.</summary>
            <param name="propertyName">
            The name of the property to get the value of.
            </param>
            <returns>The value of the property.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If there is no such property, if the property isn't readable, or
            if getting the property value throws an exception.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.GetPropertyValue(YCH.Expressions.IExpression)">
            <summary>Gets the value of a property.</summary>
            <param name="propertyExpression">
            The property expression that should be used to retrieve the property value.
            </param>
            <returns>The value of the property.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If there is no such property, if the property isn't readable, or
            if getting the property value throws an exception.
            </exception>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.SetPropertyValue(System.String,System.Object)">
            <summary>
            Sets a property value.
            </summary>
            <remarks>
            <p>
            This method is provided for convenience only. The
            <see cref="M:YCH.Objects.ObjectWrapper.SetPropertyValue(YCH.Objects.PropertyValue)"/>
            method is more powerful.
            </p>
            </remarks>
            <param name="propertyName">
            The name of the property to set value of.
            </param>
            <param name="val">The new value.</param>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.SetPropertyValue(YCH.Expressions.IExpression,System.Object)">
            <summary>
            Sets a property value.
            </summary>
            <param name="propertyExpression">
            The property expression that should be used to set the property value.
            </param>
            <param name="val">The new value.</param>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.SetPropertyValue(YCH.Objects.PropertyValue)">
            <summary>
            Sets a property value.
            </summary>
            <remarks>
            <p>
            <b>This is the preferred way to update an individual property.</b>
            </p>
            </remarks>
            <param name="pv">
            The object containing new property value.
            </param>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues)">
            <summary>Set a number of property values in bulk.</summary>
            <remarks>
            <p>
            Does not allow unknown fields. Equivalent to
            <see cref="M:YCH.Objects.ObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)"/>
            with <see langword="null"/> and <cref lang="false"/> for
            arguments.
            </p>
            </remarks>
            <param name="pvs">
            The <see cref="T:YCH.Objects.IPropertyValues"/> to set on the target
            object.
            </param>
            <exception cref="T:YCH.Objects.NotWritablePropertyException">
            If an error is encountered while setting a property.
            </exception>
            <exception cref="T:YCH.Objects.PropertyAccessExceptionsException">
            On a <see cref="T:System.Type"/> mismatch while setting a property, insufficient permissions, etc.
            </exception>
            <seealso cref="M:YCH.Objects.IObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)"/>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)">
            <summary>
            Perform a bulk update with full control over behavior.
            </summary>
            <remarks>
            <p>
            This method may throw a reflection-based exception, if there is a critical
            failure such as no matching field... less serious exceptions will be accumulated
            and thrown as a single <see cref="T:YCH.Objects.PropertyAccessExceptionsException"/>.
            </p>
            </remarks>
            <param name="propertyValues">
            The <see cref="T:YCH.Objects.PropertyValue"/>s to set on the target object.
            </param>
            <param name="ignoreUnknown">
            Should we ignore unknown values (not found in the object!?).
            </param>
            <exception cref="T:YCH.Objects.NotWritablePropertyException">
            If an error is encountered while setting a property (only thrown if the
            <paramref name="ignoreUnknown"/> parameter is set to <see langword="false"/>).
            </exception>
            <exception cref="T:YCH.Objects.PropertyAccessExceptionsException">
            On a <see cref="T:System.Type"/> mismatch while setting a property, insufficient permissions, etc.
            </exception>
            <seealso cref="M:YCH.Objects.IObjectWrapper.SetPropertyValues(YCH.Objects.IPropertyValues,System.Boolean)"/>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.GetPropertyInfo(System.String)">
            <summary>
            Returns PropertyInfo for the specified property
            </summary>
            <param name="propertyName">The name of the property to search for.</param>
            <returns>The <see cref="T:System.Reflection.PropertyInfo"/> for the specified property.</returns>
            <exception cref="T:YCH.Objects.FatalObjectException">If <see cref="T:System.Reflection.PropertyInfo"/> cannot be determined.</exception>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.GetPropertyType(System.String)">
            <summary>
            Get the <see cref="T:System.Type"/> for a particular property.
            </summary>
            <param name="propertyName">
            The property the <see cref="T:System.Type"/> of which is to be retrieved.
            </param>
            <returns>
            The <see cref="T:System.Type"/> for a particular property..
            </returns>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.GetPropertyInfos">
            <summary>
            Get the properties of the wrapped object.
            </summary>
            <returns>
            An array of <see cref="T:System.Reflection.PropertyInfo"/>s.
            </returns>
        </member>
        <member name="M:YCH.Objects.ObjectWrapper.ToString">
            <summary>
            This method is expensive! Only call for diagnostics and debugging reasons,
            not in production.
            </summary>
            <returns>
            A string describing the state of this object.
            </returns>
        </member>
        <member name="P:YCH.Objects.ObjectWrapper.WrappedInstance">
            <summary>
            The object wrapped by this <see cref="T:YCH.Objects.ObjectWrapper"/>.
            </summary>
            <exception cref="T:YCH.Objects.FatalObjectException">
            If the object cannot be changed; or an attempt is made to set the
            value of this property to <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.ObjectWrapper.WrappedType">
            <summary>
            Convenience method to return the <see cref="T:System.Type"/> of the wrapped object.
            </summary>
            <remarks>
            <p>
            Do <b>not</b> use this (convenience) method prior to setting the
            <see cref="P:YCH.Objects.ObjectWrapper.WrappedInstance"/> property.
            </p>
            </remarks>
            <returns>
            The <see cref="T:System.Type"/> of the wrapped object.
            </returns>
            <exception cref="T:System.NullReferenceException">
            If the <see cref="P:YCH.Objects.ObjectWrapper.WrappedInstance"/> property
            is <see lang="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Objects.ObjectWrapper.PropertyDescriptors">
            <summary>
            Return the collection of property descriptors.
            </summary>
        </member>
        <member name="T:YCH.Objects.PropertyAccessExceptionsException">
            <summary>
            Combined exception, composed of individual binding
            <see cref="T:YCH.Objects.PropertyAccessException"/>s.
            </summary>
            <remarks>
            <p>
            An object of this class is created at the beginning of the binding
            process, and errors added to it as necessary.
            </p>
            <p>
            The binding process continues when it encounters application-level
            <see cref="T:YCH.Objects.PropertyAccessException"/>s, applying those changes
            that can be applied and storing rejected changes in an instance of this class.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: PropertyAccessExceptionsException.cs,v 1.13 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.#ctor">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.#ctor(System.String)">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.#ctor(YCH.Objects.IObjectWrapper,YCH.Objects.PropertyAccessException[])">
            <summary>
            Create new empty PropertyAccessExceptionsException.
            We'll add errors to it as we attempt to bind properties.
            </summary>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the PropertyAccessExceptionsException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with
            the data needed to serialize the target object.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate
            with data.
            </param>
            <param name="context">
            The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>)
            for this serialization.
            </param>
        </member>
        <member name="F:YCH.Objects.PropertyAccessExceptionsException._objectWrapper">
            <summary>
            The IObjectWrapper wrapping the target object at the root of the exception.
            </summary>
        </member>
        <member name="F:YCH.Objects.PropertyAccessExceptionsException._propertyAccessExceptions">
            <summary>The list of PropertyAccessException objects.</summary>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.GetPropertyAccessException(System.String)">
            <summary>
            Return the <see cref="T:YCH.Objects.PropertyAccessException"/>
            for the supplied <paramref name="propertyName"/>, or <see langword="null"/>
            if there isn't one.
            </summary>
        </member>
        <member name="M:YCH.Objects.PropertyAccessExceptionsException.ToString">
            <summary>
            Describe the number of exceptions contained in this container class.
            </summary>
            <returns>A description of the instance contents.</returns>
        </member>
        <member name="P:YCH.Objects.PropertyAccessExceptionsException.ObjectWrapper">
            <summary>
            Return the <see cref="T:YCH.Objects.IObjectWrapper"/> that generated
            this exception.
            </summary>
        </member>
        <member name="P:YCH.Objects.PropertyAccessExceptionsException.BindObject">
            <summary>
            Return the object we're binding to.
            </summary>
        </member>
        <member name="P:YCH.Objects.PropertyAccessExceptionsException.ExceptionCount">
            <summary>
            If this returns zero (0), no errors were encountered during binding.
            </summary>
        </member>
        <member name="P:YCH.Objects.PropertyAccessExceptionsException.PropertyAccessExceptions">
            <summary>
            Return an array of the <see cref="T:YCH.Objects.PropertyAccessException"/>s
            stored in this object.
            </summary>
            <remarks>
            <p>
            Will return the empty array (not <see langword="null"/>) if there were no errors.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Objects.PropertyAccessExceptionsException.Message">
            <summary>
            Describe the group of exceptions. 
            </summary>
        </member>
        <member name="T:YCH.Objects.PropertyChangeEventArgs">
            <summary>
            Provides additional data for the <c>PropertyChanged</c> event.
            </summary>
            <remarks>
            <p>
            Provides some additional properties over and above the name of the
            property that has changed (which is inherited from the
            <see cref="T:System.ComponentModel.PropertyChangedEventArgs"/> base class).
            This allows calling code to determine whether or not a property has
            actually changed (i.e. a <c>PropertyChanged</c> event may have been
            raised, bu the value itself may be equivalent).
            </p>
            </remarks>
            <seealso cref="T:System.ComponentModel.PropertyChangedEventArgs"/>
        </member>
        <member name="M:YCH.Objects.PropertyChangeEventArgs.#ctor(System.String,System.Object,System.Object)">
            <summary>
            Create a new instance of the
            <see cref="T:YCH.Objects.PropertyChangeEventArgs"/> class.
            </summary>
            <param name="propertyName">
            The name of the property that was changed.</param>
            <param name="oldValue">The old value of the property.</param>
            <param name="newValue">the new value of the property.</param>
        </member>
        <member name="P:YCH.Objects.PropertyChangeEventArgs.OldValue">
            <summary>
            Get the old value for the property.
            </summary>
            <seealso cref="P:System.ComponentModel.PropertyChangedEventArgs.PropertyName"/>
        </member>
        <member name="P:YCH.Objects.PropertyChangeEventArgs.NewValue">
            <summary>
            Get the new value of the property.
            </summary>
            <seealso cref="P:System.ComponentModel.PropertyChangedEventArgs.PropertyName"/>
        </member>
        <member name="T:YCH.Objects.PropertyValue">
            <summary>
            Holds information and value for an individual property.
            </summary>
            <remarks>
            <p>
            Using an object here, rather than just storing all properties in a
            map keyed by property name, allows for more flexibility, and the
            ability to handle indexed properties in a special way if necessary.
            </p>
            <p>
            Note that the value doesn't need to be the final required
            <see cref="T:System.Type"/>: an
            <see cref="T:YCH.Objects.IObjectWrapper"/> implementation must
            handle any necessary conversion, as this object doesn't know anything
            about the objects it will be applied to.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: PropertyValue.cs,v 1.12 2006/04/09 07:18:49 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Objects.PropertyValue.#ctor(System.String,System.Object)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.PropertyValue"/> class.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="val">
            The value of the property (possibly before type conversion).
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Objects.PropertyValue.#ctor(System.String,System.Object,YCH.Expressions.IExpression)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Objects.PropertyValue"/> class.
            </summary>
            <param name="name">The name of the property.</param>
            <param name="val">
            The value of the property (possibly before type conversion).
            </param>
            <param name="expression">Pre-parsed property name.</param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="name"/> or <paramref name="name"/> 
            is <see langword="null"/>, or if the name contains only whitespace characters.
            </exception>
        </member>
        <member name="M:YCH.Objects.PropertyValue.ToString">
            <summary>
            Print a string representation of the property.
            </summary>
            <returns>A string representation of the property.</returns>
        </member>
        <member name="M:YCH.Objects.PropertyValue.Equals(System.Object)">
            <summary>
            Determines whether the supplied <see cref="T:System.Object"/>
            is equal to the current <see cref="T:YCH.Objects.PropertyValue"/>.  
            </summary>
            <param name="other">The other instance.</param>
            <returns>
            <see langword="true"/> if they are equal in content.
            </returns>
        </member>
        <member name="M:YCH.Objects.PropertyValue.GetHashCode">
            <summary>
            Serves as a hash function for a particular type, suitable for use
            in hashing algorithms and data structures like a hash table. 
            </summary>
            <returns>
            A hash code for the current <see cref="T:YCH.Objects.PropertyValue"/>.  
            </returns>
        </member>
        <member name="P:YCH.Objects.PropertyValue.Name">
            <summary>The name of the property.</summary>
            <value>The name of the property.</value>
        </member>
        <member name="P:YCH.Objects.PropertyValue.Expression">
            <summary>
            Parsed property expression.
            </summary>
        </member>
        <member name="P:YCH.Objects.PropertyValue.Value">
            <summary>
            Return the value of the property.
            </summary>
            <remarks>
            <p>
            Note that type conversion will <i>not</i> have occurred here.
            It is the responsibility of the
            <see cref="T:YCH.Objects.IObjectWrapper"/> implementation to
            perform type conversion.
            </p>
            </remarks>
            <value>The (possibly unresolved) value of the property.</value>
        </member>
        <member name="T:YCH.Objects.TypeMismatchException">
            <summary>
            Exception thrown on a <see cref="T:System.Type"/> mismatch when trying to set a property
            or resolve an argument to a method invocation.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Mark Pollack (.NET)</author>
            <version>
            $Id: TypeMismatchException.cs,v 1.9 2006/04/09 07:18:49 markpollack Exp $
            </version>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor">
            <summary>
            Creates a new instance of the TypeMismatchException class.
            </summary>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor(System.String)">
            <summary>
            Creates a new instance of the TypeMismatchException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the TypeMismatchException class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="rootCause">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor(YCH.Objects.PropertyChangeEventArgs,System.Type)">
            <summary>
            Creates a new instance of the TypeMismatchException class describing the
            property and required type that could not used to set a property on the target object.
            </summary>
            <param name="propertyChangeEventArgs">
            The description of the property that was to be changed.
            </param>
            <param name="requiredType">The target conversion type.</param>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor(YCH.Objects.PropertyChangeEventArgs,System.Type,System.Exception)">
            <summary>
            Creates a new instance of the TypeMismatchException class describing the
            property, required type, and underlying exception that could not be used
            to set a property on the target object.
            </summary>
            <param name="propertyChangeEventArgs">
            The description of the property that was to be changed.
            </param>
            <param name="requiredType">The target conversion type.</param>
            <param name="rootCause">The underlying exception.</param>
        </member>
        <member name="M:YCH.Objects.TypeMismatchException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the TypeMismatchException class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="P:YCH.Objects.TypeMismatchException.ErrorCode">
            <summary>
            The string error code used to classify the exception.
            </summary>
        </member>
        <member name="T:YCH.Pool.Support.ISync">
            <summary>
            Acquire/Release protocol, base of many concurrency utilities.
            </summary>
            
            <remarks>
            <p><see cref="T:YCH.Pool.Support.ISync"/> objects isolate waiting and notification for particular logical 
            states, resource availability, events, and the like that are shared 
            across multiple threads.</p>
            
            <p>Use of <see cref="T:YCH.Pool.Support.ISync"/>s sometimes (but by no means always) adds 
            flexibility and efficiency compared to the use of plain 
            .Net monitor methods and locking, and are sometimes (but by no means 
            always) simpler to program with.</p>
            
            <p>Used for implementation of a <see cref="T:YCH.Pool.Support.SimplePool"/></p>
            </remarks>
            
            <author>Doug Lea</author>
            <author>Federico Spinazzi (.Net)</author>
            <version>$Id: ISync.cs,v 1.3 2006/05/03 22:21:57 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Pool.Support.ISync.Acquire">
            <summary>  Wait (possibly forever) until successful passage.
            Fail only upon interuption. Interruptions always result in
            `clean' failures. On failure,  you can be sure that it has not 
            been acquired, and that no 
            corresponding release should be performed. Conversely,
            a normal return guarantees that the acquire was successful.
            
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.ISync.Release">
            <summary> Potentially enable others to pass.
            <p>
            Because release does not raise exceptions, 
            it can be used in `finally' clauses without requiring extra
            embedded try/catch blocks. But keep in mind that
            as with any java method, implementations may 
            still throw unchecked exceptions such as Error or NullPointerException
            when faced with uncontinuable errors. However, these should normally
            only be caught by higher-level error handlers.
            </p>
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.ISync.Attempt(System.Int64)">
            <summary>
            Wait at most msecs to pass; report whether passed. 
            <p>
            The method has best-effort semantics:
            The msecs bound cannot
            be guaranteed to be a precise upper bound on wait time in Java.
            Implementations generally can only attempt to return as soon as possible
            after the specified bound. Also, timers in Java do not stop during garbage
            collection, so timeouts can occur just because a GC intervened.
            So, msecs arguments should be used in
            a coarse-grained manner. Further,
            implementations cannot always guarantee that this method
            will return at all without blocking indefinitely when used in
            unintended ways. For example, deadlocks may be encountered
            when called in an unintended context.
            </p>
            </summary>
            <param name="msecs">the number of milleseconds to wait
            An argument less than or equal to zero means not to wait at all. 
            However, this may still require
            access to a synchronization lock, which can impose unbounded
            delay if there is a lot of contention among threads.
            </param>
            <returns>true if acquired</returns>
        </member>
        <member name="T:YCH.Pool.Support.Semaphore">
            <summary>
            <p>Base class for counting semaphores based on Semaphore implementation
            from Doug Lea.</p>
            </summary>
            <remarks> 
            
            <p>Conceptually, a semaphore 
            maintains a set of permits. Each acquire() blocks if 
            necessary until a permit is available, and then takes it.</p>
            
            <p>Each release adds a permit. However, no actual permit objects are used; 
            the Semaphore just keeps a count of the number available 
            and acts accordingly.</p>
            
            <p>A semaphore initialized to 1 can serve as a mutual exclusion lock. </p>
            
            Used for implementation of a <see cref="T:YCH.Pool.Support.SimplePool"/>
            </remarks>
            <author>Doug Lea</author>
            <author>Federico Spinazzi (.Net)</author>
            <version>$Id: Semaphore.cs,v 1.3 2006/05/03 22:21:57 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Pool.Support.Semaphore.nPermits">
            <summary>
            current number of available permits
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.#ctor(System.Int64)">
            <summary>
            <p>Create a Semaphore with the given initial number of permits.</p>
            <p>Using a seed of 1 makes the semaphore act as a mutual 
            exclusion lock.</p>
            
            <p>Negative seeds are also allowed, 
            in which case no acquires will proceed until the number of 
            releases has pushed the number of permits past 0.</p>
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.Release">
            <summary>
            Release a permit
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.Acquire">
            <summary>
            Acquire a permit
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.Attempt(System.Int64)">
            <summary>
            Wait at most msecs millisconds for a permit
            </summary>
            <param name="msecs">number of ms to wait</param>
            <returns>true if aquired</returns>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.Release(System.Int64)">
            <summary> Release N permits. <code>release(n)</code> is
            equivalent in effect to:
            <pre>
            for (int i = 0; i &lt; n; ++i) release();
            </pre>
            But may be more efficient in some semaphore implementations.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">  if n is negative.
            
            </exception>
        </member>
        <member name="M:YCH.Pool.Support.Semaphore.ToTimeMillis(System.DateTime)">
            <summary>
            Normalize the given <see cref="T:System.DateTime"/> to 
            milliseconds since epoch.
            </summary>
            <param name="date">The datetime to convert.</param>
            <returns></returns>
        </member>
        <member name="P:YCH.Pool.Support.Semaphore.Permits">
            <summary> Return the current number of available permits.
            Returns an accurate, but possibly unstable value,
            that may change immediately after returning.
            </summary>
        </member>
        <member name="T:YCH.Pool.Support.SimplePool">
            <summary>
            A simple pool implementation
            </summary>
            <remarks>
            <p>
            Based on the implementation found in Concurrent Programming in Java,
            2nd ed., by <a href="http://gee.cs.oswego.edu/dl/">Doug Lea</a>.
            </p>
            </remarks>
            <author>Doug Lea</author>
            <author>Federico Spinazzi</author>
            <author>Mark Pollack</author>
            <version>$Id: SimplePool.cs,v 1.3 2005/08/13 18:04:54 springboy Exp $</version>
        </member>
        <member name="T:YCH.Pool.IObjectPool">
            <summary>
            A simple pooling interface for managing and monitoring a pool
            of objects.  
            </summary>
            <remarks>
            <p>
            Based on the Jakarta Commons Pool API.
            </p>
            </remarks>
            <author>Federico Spinazzi</author>
            <version>$Id: IObjectPool.cs,v 1.5 2005/08/13 18:04:54 springboy Exp $</version>
            <seealso cref="T:YCH.Pool.IPoolableObjectFactory"/>
        </member>
        <member name="M:YCH.Pool.IObjectPool.BorrowObject">
            <summary>
            Obtain an instance from the pool.
            </summary>
            <remarks>
            <p>
            By contract, clients <b>must</b> return the borrowed 
            instance using <see cref="M:YCH.Pool.IObjectPool.ReturnObject(System.Object)"/>
            or a related method as defined in an implementation or
            sub-interface.
            </p>
            </remarks>
            <returns>An instance from the pool.</returns>
            <exception cref="T:YCH.Pool.PoolException">
            In case the pool is unusable.
            </exception>
            <seealso cref="M:YCH.Pool.IPoolableObjectFactory.ActivateObject(System.Object)"/>
        </member>
        <member name="M:YCH.Pool.IObjectPool.ReturnObject(System.Object)">
            <summary>
            Return an instance to the pool.
            </summary>
            <remarks>
            <p>
            By contract, the object <b>must</b> have been obtained using 
            <see cref="M:YCH.Pool.IObjectPool.BorrowObject"/>
            or a related method as defined in an implementation or sub-interface.
            </p>
            </remarks>
            <param name="target">The instance to be returned to the pool.</param>
            <seealso cref="M:YCH.Pool.IPoolableObjectFactory.PassivateObject(System.Object)"/>
        </member>
        <member name="M:YCH.Pool.IObjectPool.AddObject">
            <summary>
            Create an object using the factory set by
            the <see cref="P:YCH.Pool.IObjectPool.PoolableObjectFactory"/> property
            or other implementation dependent mechanism
            and place it into the pool. 
            </summary>
            <remarks>
            <p>
            This is an optional operation. AddObject is useful for "pre-loading" a 
            pool with idle objects.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="M:YCH.Pool.IObjectPool.Close">
            <summary>
            Close the pool and free any resources associated with it.
            </summary>
        </member>
        <member name="M:YCH.Pool.IObjectPool.Clear">
            <summary>
            Clear objects sitting idle in the pool, releasing any
            associated resources.
            </summary>
            <remarks>
            <p>
            This is an optional operation.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="P:YCH.Pool.IObjectPool.NumActive">
            <summary>
            Gets the number of instances currently borrowed from the pool. 
            </summary>
            <remarks>
            <p>
            This is an optional operation.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>       
        </member>
        <member name="P:YCH.Pool.IObjectPool.NumIdle">
            <summary>
            Gets the number of instances currently idle in the pool.
            </summary>
            <remarks>
            <p>
            This is an optional operation.
            </p>
            <p>
            This may be considered an <i>approximation</i> of the number of objects
            that can be borrowed without creating any new instances.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="P:YCH.Pool.IObjectPool.PoolableObjectFactory">
            <summary>
            Set the factory used to create new instances.
            </summary>
            <remarks>
            <p>
            This is an optional operation.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="F:YCH.Pool.Support.SimplePool.available">
            <summary>
            Set of permits
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.#ctor(YCH.Pool.IPoolableObjectFactory,System.Int32)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Pool.Support.SimplePool"/>
            class.
            </summary>
            <param name="factory">
            The factory used to instantiate and manage the lifecycle of pooled objects.
            </param>
            <param name="size">The initial size of the pool.</param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="factory"/> is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="size"/> is less than or equal to zero.
            </exception>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.BorrowObject">
            <summary>
            Obtain an instance from the pool.
            </summary>
            <exception cref="T:YCH.Pool.PoolException">
            In case the pool is unusable.
            </exception>
            <seealso cref="M:YCH.Pool.IPoolableObjectFactory.ActivateObject(System.Object)"/>
            <seealso cref="M:YCH.Pool.IObjectPool.BorrowObject"/>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.ReturnObject(System.Object)">
            <summary>
            Return an instance to the pool.
            </summary>
            <param name="target">The instance to be returned to the pool.</param>
            <seealso cref="M:YCH.Pool.IPoolableObjectFactory.PassivateObject(System.Object)"/>
            <seealso cref="M:YCH.Pool.IObjectPool.ReturnObject(System.Object)"/>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.AddObject">
            <summary>
            Create an object using the factory set by
            the <see cref="P:YCH.Pool.Support.SimplePool.PoolableObjectFactory"/> property
            or other implementation dependent mechanism
            and place it into the pool.
            </summary>
            <remarks>
            <p>
            This implementation <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.DoBorrow">
            <summary>
            Synchronized borrow logic.
            </summary>
            <seealso cref="M:YCH.Pool.Support.SimplePool.BorrowObject"/>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.DoReturn(System.Object)">
            <summary>
            Synchronized release logic.
            </summary>
            <param name="target">
            The object to release to the pool.
            </param>
            <returns>
            <see langword="false"/> if the object was not a busy one.
            </returns>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.InitItems(System.Int32)">
            <summary>
            Instantiates the supplied number of instances and adds
            them to the pool.
            </summary>
            <param name="initialInstances">
            The initial number of objects to build.
            </param>
            <exception cref="T:System.ArgumentException">
            If the supplied number of <paramref name="initialInstances"/> is
            less than or equal to zero.
            </exception>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.Close">
            <summary>
            Close the pool and free any resources associated with it.
            </summary>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.Clear">
            <summary>
            Clear objects sitting idle in the pool, releasing any
            associated resources.
            </summary>
            <remarks>
            <p>
            This implementation <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="M:YCH.Pool.Support.SimplePool.MakeNotUsable">
            <summary>
            Change the state of the pool to unusable.
            </summary>
        </member>
        <member name="P:YCH.Pool.Support.SimplePool.NumActive">
            <summary>
            Gets the number of instances currently borrowed from the pool.
            </summary>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
            <seealso cref="P:YCH.Pool.IObjectPool.NumActive"/>
        </member>
        <member name="P:YCH.Pool.Support.SimplePool.NumIdle">
            <summary>
            Gets the number of instances currently idle in the pool.
            </summary>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
            <seealso cref="P:YCH.Pool.IObjectPool.NumIdle"/>
        </member>
        <member name="P:YCH.Pool.Support.SimplePool.PoolableObjectFactory">
            <summary>
            Set the factory used to create new instances.
            </summary>
            <remarks>
            <p>
            This implementation <b>always</b> throws a
            <see cref="T:System.NotSupportedException"/>.
            </p>
            </remarks>
            <exception cref="T:System.NotSupportedException">
            If the implementation does not support the operation.
            </exception>
        </member>
        <member name="T:YCH.Pool.IPoolableObjectFactory">
            <summary>
            Defines lifecycle methods for objects that are to be used in an
            <see cref="T:YCH.Pool.IObjectPool"/> implementation.
            </summary>
            <remarks>
            <p>
            The following methods summarize the contract between an
            <see cref="T:YCH.Pool.IObjectPool"/> and an
            an <see cref="T:YCH.Pool.IPoolableObjectFactory"/>.
            </p>
            <list type="number">
              <item>
            	<see cref="M:YCH.Pool.IPoolableObjectFactory.MakeObject"/>
            	is called whenever a new instance is needed.
              </item>
              <item>
            	<see cref="M:YCH.Pool.IPoolableObjectFactory.ActivateObject(System.Object)"/>
            	is invoked on every instance before it is returned from
            	the pool.
              </item>
              <item>
            	<see cref="M:YCH.Pool.IPoolableObjectFactory.PassivateObject(System.Object)"/>
            	is invoked on every instance when it is returned to the pool.
              </item>
              <item>
            	<see cref="M:YCH.Pool.IPoolableObjectFactory.DestroyObject(System.Object)"/>
            	is invoked on every instance when it is being dropped from the
            	pool (see
            	<see cref="M:YCH.Pool.IPoolableObjectFactory.ValidateObject(System.Object)"/>
              </item>
            </list>
            <p>
            Based on the Jakarta Commons Pool API.
            </p>
            </remarks>
            <author>Federico Spinazzi</author>
            <version>$Id: IPoolableObjectFactory.cs,v 1.5 2005/11/18 17:29:32 gcaprio Exp $</version>
            <seealso cref="T:YCH.Pool.IObjectPool"/>
        </member>
        <member name="M:YCH.Pool.IPoolableObjectFactory.MakeObject">
            <summary>
            Creates an instance that can be returned by the pool.
            </summary>
            <returns>
            An instance that can be returned by the pool.
            </returns>
        </member>
        <member name="M:YCH.Pool.IPoolableObjectFactory.DestroyObject(System.Object)">
            <summary>
            Destroys an instance no longer needed by the pool.
            </summary>
            <remarks>
            <p>
            Invoked on every instance when it is being "dropped" 
            from the pool (whether due to the return value from a call to the
            <see cref="M:YCH.Pool.IPoolableObjectFactory.ValidateObject(System.Object)"/>
            method, or for reasons specific to the pool implementation.)
            </p>
            </remarks>
            <param name="obj">The instance to be destroyed.</param>
        </member>
        <member name="M:YCH.Pool.IPoolableObjectFactory.ValidateObject(System.Object)">
            <summary>
            Ensures that the instance is safe to be returned by the pool. 
            Returns false if this object should be destroyed. 
            </summary>
            <remarks>
            <p>
            Invoked in an implementation-specific fashion to determine if an 
            instance is still valid to be returned by the pool. 
            It will only be invoked on an "activated" instance.
            </p>
            </remarks>
            <param name="obj">The instance to validate.</param>
            <returns>
            <see langword="false"/> if this object is not valid and
            should be dropped from the pool, otherwise <see langword="true"/>.
            </returns>
        </member>
        <member name="M:YCH.Pool.IPoolableObjectFactory.ActivateObject(System.Object)">
            <summary>
            Reinitialize an instance to be returned by the pool. 
            </summary>
            <remarks>
            <p>
            Invoked on every instance before it is returned from the pool.
            </p>
            </remarks>
            <param name="obj">The instance to be activated.</param>
        </member>
        <member name="M:YCH.Pool.IPoolableObjectFactory.PassivateObject(System.Object)">
            <summary>
            Uninitialize an instance to be returned to the pool.
            </summary>
            <remarks>
            <p>
            Invoked on every instance when it is returned to the pool.
            </p>
            </remarks>
            <param name="obj">The instance returned to the pool.</param>
        </member>
        <member name="T:YCH.Pool.PoolException">
            <summary>
            Base class for all pooling exceptions.
            </summary>
            <author>Federico Spinazzi</author>
            <version>$Id: PoolException.cs,v 1.4 2005/08/07 04:59:47 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Pool.PoolException.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Pool.PoolException"/> class.
            </summary>
        </member>
        <member name="M:YCH.Pool.PoolException.#ctor(System.String)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Pool.PoolException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
        </member>
        <member name="M:YCH.Pool.PoolException.#ctor(System.String,System.Exception)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Pool.PoolException"/> class.
            </summary>
            <param name="message">
            A message about the exception.
            </param>
            <param name="innerException">
            The root exception that is being wrapped.
            </param>
        </member>
        <member name="M:YCH.Pool.PoolException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Pool.PoolException"/> class.
            </summary>
            <param name="info">
            The <see cref="T:System.Runtime.Serialization.SerializationInfo"/>
            that holds the serialized object data about the exception being thrown.
            </param>
            <param name="context">
            The <see cref="T:System.Runtime.Serialization.StreamingContext"/>
            that contains contextual information about the source or destination.
            </param>
        </member>
        <member name="T:YCH.Proxy.AbstractProxyTypeBuilder">
            <summary>
            Generic proxy builder that can be used to create a proxy for any class.
            </summary>
            <remarks>
            <p>
            This <see langword="abstract"/> class provides a set of template
            methods that derived classes can override to provide custom behaviour
            appropriate to the type of proxy that is being generated (one of
            inheritance or composition-based proxying).
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: AbstractProxyTypeBuilder.cs,v 1.8 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Proxy.IProxyTypeBuilder">
            <summary>
            Describes the operations for a generic proxy type builder that can be
            used to create a proxy type for any class.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: IProxyTypeBuilder.cs,v 1.3 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Proxy.IProxyTypeBuilder.BuildProxy">
            <summary>
            Creates the proxy.
            </summary>
            <returns>The generated proxy class.</returns>
            <exception cref="T:System.ArgumentException">
            If both the <see cref="P:YCH.Proxy.IProxyTypeBuilder.TargetType"/> and
            <see cref="P:YCH.Proxy.IProxyTypeBuilder.BaseType"/> properties are
            <see langword="null"/>.
            </exception>
        </member>
        <member name="P:YCH.Proxy.IProxyTypeBuilder.Name">
            <summary>
            The name of the proxy <see cref="T:System.Type"/>.
            </summary>
            <value>The name of the proxy <see cref="P:YCH.Proxy.IProxyTypeBuilder.TargetType"/>.</value>
        </member>
        <member name="P:YCH.Proxy.IProxyTypeBuilder.TargetType">
            <summary>
            The <see cref="T:System.Type"/> of the target object.
            </summary>
        </member>
        <member name="P:YCH.Proxy.IProxyTypeBuilder.BaseType">
            <summary>
            The <see cref="T:System.Object"/> of the class that the proxy must
            inherit from.
            </summary>
        </member>
        <member name="P:YCH.Proxy.IProxyTypeBuilder.ClassAttributes">
            <summary>
            The list of custom <see cref="T:System.Attribute"/>s that the proxy
            class must be decorated with.
            </summary>
            <remarks>
            <p>
            Note that the list is composed of instances of the actual
            <see cref="T:System.Attribute"/>s that are to be applied, not the
            <see cref="T:System.Attribute"/>s of the <see cref="T:System.Type"/>s.
            </p>
            </remarks>
            <example>
            <p>
            The following code snippets show examples of how to decorate the
            the proxied class with one or more <see cref="T:System.Attribute"/>s.
            </p>
            <code language="C#">
            // get a concrete implementation of an IProxyTypeBuilder...
            IProxyTypeBuilder builder = ... ;
            builder.TargetType = typeof( ... );
            
            IDictionary typeAtts = new Hashtable();
            builder.TypeAttributes = typeAtts;
            
            // applies a single Attribute to the proxied class...
            typeAtts = new Attribute[] { new MyCustomAttribute() });
            
            // applies a number of Attributes to the proxied class...
            typeAtts = new Attribute[]
                {
            		new MyCustomAttribute(),
            		new AnotherAttribute(),
                });
            </code>
            </example>
        </member>
        <member name="P:YCH.Proxy.IProxyTypeBuilder.MemberAttributes">
            <summary>
            The custom <see cref="T:System.Attribute"/>s that the proxy
            members must be decorated with.
            </summary>
            <remarks>
            <p>
            This dictionary must use simple <see cref="T:System.String"/>s for keys
            (denoting the member names that the attributes are to be applied to),
            with the corresponding values being
            <see cref="T:System.Collections.IList"/>s.
            </p>
            <p>
            The key may be wildcarded using the <c>'*'</c> character... if so,
            then those proxy members that match against the key will be
            decorated with the attendant list of
            <see cref="T:System.Attribute"/>s. This naturally implies that using
            the <c>'*'</c> character as a key will result in the attendant list
            of <see cref="T:System.Attribute"/>s being applied to every member of
            the proxied class.
            </p>
            </remarks>
            <example>
            <p>
            The following code snippets show examples of how to decorate the
            members of a proxied class with one or more
            <see cref="T:System.Attribute"/>s.
            </p>
            <code language="C#">
            // get a concrete implementation of an IProxyTypeBuilder...
            IProxyTypeBuilder builder = ... ;
            builder.TargetType = typeof( ... );
            
            IDictionary memAtts = new Hashtable();
            builder.MemberAttributes = memAtts;
            
            // applies a single Attribute to all members of the proxied class...
            memAtts ["*"] = new Attribute[] { new MyCustomAttribute() });
            
            // applies a number of Attributes to all members of the proxied class...
            memAtts ["*"] = new Attribute[]
                {
            		new MyCustomAttribute(),
            		new AnotherAttribute(),
                });
            
            // applies a single Attribute to those members of the proxied class
            //     that have identifiers starting with 'Do' ...
            memAtts ["Do*"] = new Attribute[] { new MyCustomAttribute() });
            
            // applies a number of Attributes to those members of the proxied class
            //     that have identifiers starting with 'Do' ...
            memAtts ["Do*"] = new Attribute[]
                {
            		new MyCustomAttribute(),
            		new AnotherAttribute(),
                }); 
            </code>
            </example>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.#ctor(System.Reflection.Emit.ModuleBuilder)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Proxy.AbstractProxyTypeBuilder"/> class.
            </summary>
            <param name="module">
            The dynamic module to create the proxy <see cref="T:System.Type"/> in.
            </param>
            <remarks>
            <p>
            This is an <see langword="abstract"/> class, and as such exposes no
            public constructors.
            </p>
            </remarks>
            <seealso cref="T:System.Reflection.Module"/>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.BuildProxy">
            <summary>
            Creates the proxy.
            </summary>
            <returns>The generated proxy class.</returns>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ApplyCustomAttributes(System.Reflection.Emit.TypeBuilder,System.Collections.IList)">
            <summary>
            Applies custom attributes to the proxy class.
            </summary>
            <param name="builder">
            The <see cref="T:System.Type"/> builder to use.
            </param>
            <param name="attributes">The attributes to apply.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ApplyCustomAttributes(System.Reflection.Emit.MethodBuilder,System.Collections.IList)">
            <summary>
            Applies custom attributes to a proxied method.
            </summary>
            <param name="builder">The method builder to use.</param>
            <param name="attributes">The attributes to apply.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ImplementConstructors(System.Reflection.Emit.TypeBuilder)">
            <summary>
            Implements constructors for the proxy class.
            </summary>
            <param name="builder">
            The <see cref="T:System.Type"/> builder to use.
            </param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.DelegateConstructor(System.Reflection.Emit.ConstructorBuilder,System.Reflection.Emit.ILGenerator,System.Reflection.ConstructorInfo)">
            <summary>
            Delegates call to the specified constructor.
            </summary>
            <param name="builder">The constructor builder to use.</param>
            <param name="il">The IL generator to use.</param>
            <param name="constructor">
            The constructor to delegate the call to.
            </param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ImplementInterface(System.Reflection.Emit.TypeBuilder,System.Type,System.Reflection.Emit.FieldBuilder,System.Boolean)">
            <summary>
            Implements the specified <paramref name="intf"/> by delegating calls to
            the target object.
            </summary>
            <param name="builder">
            The <see cref="T:System.Type"/> builder to use for code generation.
            </param>
            <param name="intf">The interface to implement.</param>
            <param name="targetField">The target field calls should be delegated to.</param>
            <param name="explicitImplementation">
            <see langword="true"/> if the supplied <paramref name="intf"/> is to be
            implemented explicitly.
            </param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ImplementMethod(System.Reflection.Emit.TypeBuilder,System.String,System.Reflection.MethodAttributes,System.Reflection.Emit.FieldBuilder,System.Reflection.MethodInfo,System.Reflection.MethodInfo,System.Boolean)">
            <summary>
            Implements a single method.
            </summary>
            <param name="builder">
            The <see cref="T:System.Type"/> builder to use for code generation.
            </param>
            <param name="name">The name of the generated method.</param>
            <param name="attributes">The method attributes.</param>
            <param name="targetField">The target field calls should be delegated to.</param>
            <param name="targetMethod">The method to delegate to.</param>
            <param name="interfaceMethod">The interface definition of the method, if applicable.</param>
            <param name="targetImplementsInterface">
                <c>True</c> if target object implements specified interface, <c>False</c> otherwise.</param>
            <returns>The generated method.</returns>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ProcessReturnValue(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder)">
            <summary>
            Processes return value as desired.
            </summary>
            <remarks>
            <p>
            This method can be used by to modify return value of the 
            proxy method. For example, composition based proxies can
            override this method and implement functionality that
            replaces raw reference to a target object with a reference
            to proxy. 
            </p>
            </remarks>
            <param name="il">The IL generator to use.</param>
            <param name="returnValue">The location of the return value.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.CalculateMethodAttributes(System.Reflection.MethodInfo)">
            <summary>
            Calculates method attributes based on method type.
            </summary>
            <param name="targetMethod">
            The proxied method.
            </param>
            <returns>The method attributes for the proxied method.</returns>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.DelegateMethodCall(System.Reflection.Emit.MethodBuilder,System.Reflection.Emit.ILGenerator,System.Reflection.Emit.FieldBuilder,System.Reflection.MethodInfo,System.Reflection.MethodInfo,System.Reflection.Emit.LocalBuilder,System.Boolean)">
            <summary>
            Delegates method call.
            </summary>
            <param name="mb">Method builder to use.</param>
            <param name="il">The IL generator to use.</param>
            <param name="targetField">The target field calls should be delegated to.</param>
            <param name="targetMethod">The method to delegate to.</param>
            <param name="interfaceMethod">The interface definition of the method, if applicable.</param>
            <param name="returnValue">Variable that should be used to store return value of the target method.</param>
            <param name="targetImplementsInterface">
                <c>True</c> if target object implements specified interface, <c>False</c> otherwise.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.PushTarget(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.FieldBuilder)">
            <summary>
            Pushes specified target instance on stack, or the proxy itself if target is <c>null</c>.
            </summary>
            <param name="il">The IL generator to use.</param>
            <param name="targetField">The target field calls should be delegated to.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.PushThis(System.Reflection.Emit.ILGenerator)">
            <summary>
            Pushes proxy instance on stack.
            </summary>
            <param name="il">The IL generator to use.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.DefineMethodParameters(System.Reflection.Emit.MethodBuilder,System.Reflection.MethodInfo)">
            <summary>
            Defines method parameters based on proxied method metadata.
            </summary>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ImplementProperty(System.Reflection.Emit.TypeBuilder,System.Type,System.Reflection.PropertyInfo,System.Collections.IDictionary)">
            <summary>
            Implements the specified <paramref name="property"/>.
            </summary>
            <param name="typeBuilder">The type builder to use.</param>
            <param name="intf">target interface.</param>
            <param name="property">The property to proxy.</param>
            <param name="methodMap">The implemented methods map.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.ImplementEvent(System.Reflection.Emit.TypeBuilder,System.Type,System.Reflection.EventInfo,System.Collections.IDictionary)">
            <summary>
            Implements the specified event
            </summary>
            <param name="typeBuilder">The type builder to use.</param>
            <param name="intf">The target interface.</param>
            <param name="evt">The event to proxy.</param>
            <param name="methodMap">The implemented methods map.</param>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.IntroduceProperties(System.Reflection.Emit.TypeBuilder,System.Reflection.PropertyInfo[])">
            <summary>
            Introduces the specified properties.
            </summary>
            <param name="tb">The type builder to use.</param>
            <param name="properties">The properties to create.</param>
            <returns>
            A map of fields backing generated properties, with the property name as the key.
            </returns>
        </member>
        <member name="M:YCH.Proxy.AbstractProxyTypeBuilder.GetMethodAttributes(System.Reflection.MethodInfo)">
            <summary>
            Calculates and returns the list of attributes that apply to the
            specified method.
            </summary>
            <param name="method">The method to find attributes for.</param>
            <returns>
            A list of custom attributes that should be applied to method.
            </returns>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.Name">
            <summary>
            The name of the proxy <see cref="T:System.Type"/>.
            </summary>
            <remarks>
            <p>
            If this property is not set explicitly, then the value
            of this property will be autogenerated on the first
            call to the accessor. This autogenerated name will use
            the value assigned to the <see cref="P:YCH.Proxy.AbstractProxyTypeBuilder.TargetType"/> property...
            if the <see cref="P:YCH.Proxy.AbstractProxyTypeBuilder.TargetType"/> property has not yet been assigned
            a value, then the result of accessing this property will be
            <see langword="null"/>.
            </p>
            </remarks>
            <value>The name of the proxy <see cref="T:System.Type"/>.</value>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.TargetType">
            <summary>
            The <see cref="T:System.Type"/> of the target object.
            </summary>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.BaseType">
            <summary>
            The <see cref="T:System.Type"/> of the class that the proxy must
            inherit from.
            </summary>
            <remarks>
            <p>
            The default value of this property is the
            <see cref="T:System.Object"/> <see cref="T:System.Type"/>.
            </p>
            </remarks>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.ClassAttributes">
            <summary>
            The list of custom <see cref="T:System.Attribute"/>s that the proxy
            class must be decorated with.
            </summary>
            <see cref="P:YCH.Proxy.IProxyTypeBuilder.ClassAttributes"/>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.MemberAttributes">
            <summary>
            The custom <see cref="T:System.Attribute"/>s that the proxy
            members must be decorated with.
            </summary>
            <see cref="P:YCH.Proxy.IProxyTypeBuilder.MemberAttributes"/>
        </member>
        <member name="P:YCH.Proxy.AbstractProxyTypeBuilder.Module">
            <summary>
            Gets the dynamic module that the proxy must be created in.
            </summary>
            <seealso cref="T:System.Reflection.Module"/>
        </member>
        <member name="T:YCH.Proxy.CompositionProxyTypeBuilder">
            <summary>
            Builds a proxy type using composition.
            </summary>
            <remarks>
            <note>
            In order for this builder to work, the target <b>must</b> implement
            one or more interfaces.
            </note>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: CompositionProxyTypeBuilder.cs,v 1.6 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Proxy.CompositionProxyTypeBuilder.targetInstance">
            <summary>
            Target instance calls should be delegated to.
            </summary>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.#ctor(System.Reflection.Emit.ModuleBuilder)">
            <summary>
            Creates a new instance of the composition proxy builder.
            </summary>
            <param name="module">
            The dynamic module to create the proxy <see cref="T:System.Type"/> in.
            </param>
            <seealso cref="T:System.Reflection.Module"/>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.BuildProxy">
            <summary>
            Creates a proxy that delegates calls to an instance of the
            target object.
            </summary>
            <remarks>
            <p>
            Only interfaces can be proxied using composition, so the target
            <b>must</b> implement one or more interfaces.
            </p>
            </remarks>
            <returns>The generated proxy class.</returns>
            <exception cref="T:System.ArgumentException">
            If the <see cref="P:YCH.Proxy.IProxyTypeBuilder.TargetType"/>
            does not implement any interfaces.
            </exception>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.DeclareTargetInstanceField(System.Reflection.Emit.TypeBuilder)">
            <summary>
            Deaclares a field that holds the target object instance.
            </summary>
            <param name="builder">
            The <see cref="T:System.Type"/> builder to use for code generation.
            </param>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.DelegateConstructor(System.Reflection.Emit.ConstructorBuilder,System.Reflection.Emit.ILGenerator,System.Reflection.ConstructorInfo)">
            <summary>
            Implements proxy constructor.
            </summary>
            <remarks>
            <p>
            This implementation delegates the call to a base class constructor
            and then creates instance of the target object for delegation.
            </p>
            </remarks>
            <param name="cb">The constructor builder to use.</param>
            <param name="il">The IL generator to use.</param>
            <param name="constructor">The base class constructor.</param>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.ProcessReturnValue(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder)">
            <summary>
            Replaces a raw reference with a reference to a proxy.
            </summary>
            <remarks>
            <p>
            If the target object returns reference to itself -- 'this' --
            we need to treat it as a special case and return a reference
            to a proxy object instead.
            </p>
            </remarks>
            <param name="il">The IL generator to use.</param>
            <param name="returnValue">The location of the return value.</param>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.CreateTypeBuilder">
            <summary>
            Creates an appropriate type builder.
            </summary>
            <returns>The type builder to use.</returns>
        </member>
        <member name="M:YCH.Proxy.CompositionProxyTypeBuilder.SetTargetInstance(System.Reflection.Emit.ILGenerator)">
            <summary>
            Creates an instance of the target object.
            </summary>
            <param name="il">The IL generator to use.</param>
        </member>
        <member name="P:YCH.Proxy.CompositionProxyTypeBuilder.TargetInterfaces">
            <summary>
            Gets or sets the list of interfaces proxy should implement.
            </summary>
            <value>The list of target interfaces.</value>
        </member>
        <member name="P:YCH.Proxy.CompositionProxyTypeBuilder.ExplicitInterfaceImplementation">
            <summary>
            Gets or sets a value indicating whether interfaces should be implemented explicitly.
            </summary>
            <value>
            	<c>true</c> if they should be; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="T:YCH.Proxy.InheritanceProxyTypeBuilder">
            <summary>
            Builds a proxy type using inheritance.
            </summary>
            <remarks>
            <note>
            In order for this builder to work, target methods have to be either
            <see langword="virtual"/>, or belong to an interface.
            </note>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: InheritanceProxyTypeBuilder.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Proxy.InheritanceProxyTypeBuilder.#ctor(System.Reflection.Emit.ModuleBuilder)">
            <summary>
            Creates a new instance of the inheritance proxy builder.
            </summary>
            <param name="module">
            The dynamic module to create the proxy <see cref="T:System.Type"/> in.
            </param>
            <seealso cref="T:System.Reflection.Module"/>
        </member>
        <member name="M:YCH.Proxy.InheritanceProxyTypeBuilder.BuildProxy">
            <summary>
            Creates a proxy that inherits the proxied object's class.
            </summary>
            <remarks>
            <p>
            Only <see langword="virtual"/> (non-final) methods can be proxied,
            unless they are members of  one of the interfaces that target class
            implements. In that case, methods will be proxied using explicit
            interface implementation, which means that client code will have
            to cast the proxy to a specific interface in order to invoke the
            methods.
            </p>
            </remarks>
            <returns>The generated proxy class.</returns>
        </member>
        <member name="T:YCH.Proxy.ProxyStrategy">
            <summary>
            Enumerates the available proxy strategies.
            </summary>
            <seealso cref="T:YCH.Proxy.IProxyTypeBuilder"/>
            <author>Aleksandar Seovic</author>
            <version>$Id: ProxyStrategy.cs,v 1.4 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Proxy.ProxyStrategy.Default">
            <summary>
            Tells a <see cref="T:YCH.Proxy.IProxyTypeBuilder"/> to determine the
            best strategy.
            </summary>
        </member>
        <member name="F:YCH.Proxy.ProxyStrategy.Composition">
            <summary>
            Tells a <see cref="T:YCH.Proxy.IProxyTypeBuilder"/> to create a
            composition proxy.
            </summary>
        </member>
        <member name="F:YCH.Proxy.ProxyStrategy.Inheritance">
            <summary>
            Tells a <see cref="T:YCH.Proxy.IProxyTypeBuilder"/> to create an
            inheritance proxy.
            </summary>
        </member>
        <member name="T:YCH.Proxy.ProxyTypeUtils">
            <summary>
            Miscellaneous utility methods relating to the creation of proxy
            <see cref="T:System.Type"/>s.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: ProxyTypeUtils.cs,v 1.3 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Proxy.ProxyTypeUtils.IsNotOneOfTheObjectClassMethods(System.String)">
            <summary>
            Is the supplied <paramref name="methodName"/> one of the core
            <see cref="T:System.Object"/> methods that must be treated as
            special cases when proxying types?
            </summary>
            <remarks>
            <p>
            The current special case methods are...
            <list type="bullet">
            <item><description><see cref="M:System.Object.Equals(System.Object)"/></description></item>
            <item><description><see cref="M:System.Object.GetHashCode"/></description></item>
            <item><description><see cref="M:System.Object.GetType"/></description></item>
            <item><description><see cref="M:System.Object.ToString"/></description></item>
            </list>
            </p>
            <p>
            The check <b>is</b> case sensitive.
            </p>
            </remarks>
            <param name="methodName">
            The name of the method that is to be checked.
            </param>
            <returns>
            <see langword="true"/> if the supplied <paramref name="methodName"/>
            is a special case method.
            </returns>
        </member>
        <member name="M:YCH.Proxy.ProxyTypeUtils.#ctor">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Proxy.ProxyTypeUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public
            constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Util.ArrayUtils">
            <summary>
            Various utility methods relating to the manipulation of arrays.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ArrayUtils.cs,v 1.12 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.ArrayUtils.AreEqual(System.Object[],System.Object[])">
            <summary>
            Tests equality of two single-dimensional arrays by checking each element
            for equality.
            </summary>
            <param name="a">The first array to be checked.</param>
            <param name="b">The second array to be checked.</param>
            <returns>True if arrays are the same, false otherwise.</returns>
        </member>
        <member name="T:YCH.Util.AssertUtils">
            <summary>
            Assertion utility methods that simplify things such as argument checks.
            </summary>
            <remarks>
            <p>
            Not intended to be used directly by applications.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: AssertUtils.cs,v 1.9 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.AssertUtils.ArgumentNotNull(System.Object,System.String)">
            <summary>
            Checks the value of the supplied <paramref name="argument"/> and throws an
            <see cref="T:System.ArgumentNullException"/> if it is <see langword="null"/>.
            </summary>
            <param name="argument">The object to check.</param>
            <param name="name">The argument name.</param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="argument"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.AssertUtils.ArgumentNotNull(System.Object,System.String,System.String)">
            <summary>
            Checks the value of the supplied <paramref name="argument"/> and throws an
            <see cref="T:System.ArgumentNullException"/> if it is <see langword="null"/>.
            </summary>
            <param name="argument">The object to check.</param>
            <param name="name">The argument name.</param>
            <param name="message">
            An arbitrary message that will be passed to any thrown
            <see cref="T:System.ArgumentNullException"/>.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="argument"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.AssertUtils.ArgumentHasText(System.String,System.String)">
            <summary>
            Checks the value of the supplied string <paramref name="argument"/> and throws an
            <see cref="T:System.ArgumentException"/> if it is <see langword="null"/> or
            contains only whitespace character(s).
            </summary>
            <param name="argument">The string to check.</param>
            <param name="name">The argument name.</param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="argument"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Util.AssertUtils.ArgumentHasText(System.String,System.String,System.String)">
            <summary>
            Checks the value of the supplied string <paramref name="argument"/> and throws an
            <see cref="T:System.ArgumentNullException"/> if it is <see langword="null"/> or
            contains only whitespace character(s).
            </summary>
            <param name="argument">The string to check.</param>
            <param name="name">The argument name.</param>
            <param name="message">
            An arbitrary message that will be passed to any thrown
            <see cref="T:System.ArgumentException"/>.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="argument"/> is <see langword="null"/> or
            contains only whitespace character(s).
            </exception>
        </member>
        <member name="M:YCH.Util.AssertUtils.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.AssertUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Util.CachedTypeResolver">
            <summary>
            Resolves (instantiates) a <see cref="T:System.Type"/> by it's (possibly
            assembly qualified) name, and caches the <see cref="T:System.Type"/>
            instance against the type name.
            </summary>
            <version>$Id: CachedTypeResolver.cs,v 1.7 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Util.ITypeResolver">
            <summary>
            Resolves a <see cref="T:System.Type"/> by name.
            </summary>
            <remarks>
            <p>
            The rationale behind the creation of this interface is to centralise
            the resolution of type names to <see cref="T:System.Type"/> instances
            beyond that offered by the plain vanilla
            <see cref="M:System.Type.GetType(System.String)"/> method call.
            </p>
            </remarks>
            <version>$Id: ITypeResolver.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.ITypeResolver.Resolve(System.String)">
            <summary>
            Resolves the supplied <paramref name="typeName"/> to a
            <see cref="T:System.Type"/>
            instance.
            </summary>
            <param name="typeName">
            The (possibly partially assembly qualified) name of a
            <see cref="T:System.Type"/>.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/> instance.
            </returns>
            <exception cref="T:System.TypeLoadException">
            If the supplied <paramref name="typeName"/> could not be resolved
            to a <see cref="T:System.Type"/>.
            </exception>
        </member>
        <member name="F:YCH.Util.CachedTypeResolver.typeCache">
            <summary>
            The cache, mapping type names (<see cref="T:System.String"/> instances) against
            <see cref="T:System.Type"/> instances.
            </summary>
        </member>
        <member name="M:YCH.Util.CachedTypeResolver.#ctor(YCH.Util.ITypeResolver)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.CachedTypeResolver"/> class.
            </summary>
            <param name="typeResolver">
            The <see cref="T:YCH.Util.ITypeResolver"/> that this instance will delegate
            actual <see cref="T:System.Type"/> resolution to if a <see cref="T:System.Type"/>
            cannot be found in this instance's <see cref="T:System.Type"/> cache.
            </param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="typeResolver"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.CachedTypeResolver.Resolve(System.String)">
            <summary>
            Resolves the supplied <paramref name="typeName"/> to a
            <see cref="T:System.Type"/>
            instance.
            </summary>
            <param name="typeName">
            The (possibly partially assembly qualified) name of a
            <see cref="T:System.Type"/>.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/> instance.
            </returns>
            <exception cref="T:System.TypeLoadException">
            If the supplied <paramref name="typeName"/> could not be resolved
            to a <see cref="T:System.Type"/>.
            </exception>
        </member>
        <member name="T:YCH.Util.CollectionUtils">
            <summary>
            Miscellaneous collection utility methods.
            </summary>
            <remarks>
            Mainly for internal use within the framework.
            </remarks>
            <author>Mark Pollack (.NET)</author>
            <version>$Id: CollectionUtils.cs,v 1.9 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.CollectionUtils.HasUniqueObject(System.Collections.ICollection)">
            <summary>
            Determine whether a given collection only contains
            a single unique object
            </summary>
            <param name="coll"></param>
            <returns></returns>
        </member>
        <member name="M:YCH.Util.CollectionUtils.Contains(System.Collections.ICollection,System.Object)">
            <summary>
            Determines whether the <paramref name="collection"/> contains the specified <paramref name="element"/>.
            </summary>
            <param name="collection">The collection to check.</param>
            <param name="element">The object to locate in the collection.</param>
            <returns><see lang="true"/> if the element is in the collection, <see lang="false"/> otherwise.</returns>
        </member>
        <member name="M:YCH.Util.CollectionUtils.Add(System.Collections.ICollection,System.Object)">
            <summary>
            Adds the specified <paramref name="element"/> to the specified <paramref name="collection"/> .
            </summary>
            <param name="collection">The collection to add the element to.</param>
            <param name="element">The object to add to the collection.</param>
        </member>
        <member name="M:YCH.Util.CollectionUtils.ContainsAll(System.Collections.ICollection,System.Collections.ICollection)">
            <summary>
            Determines whether the collection contains all the elements in the specified collection.
            </summary>
            <param name="targetCollection">The collection to check.</param>
            <param name="sourceCollection">Collection whose elements would be checked for containment.</param>
            <returns>true if the target collection contains all the elements of the specified collection.</returns>
        </member>
        <member name="M:YCH.Util.CollectionUtils.RemoveAll(System.Collections.ICollection,System.Collections.ICollection)">
            <summary>
            Removes all the elements from the target collection that are contained in the source collection.
            </summary>
            <param name="targetCollection">Collection where the elements will be removed.</param>
            <param name="sourceCollection">Elements to remove from the target collection.</param>
        </member>
        <member name="M:YCH.Util.CollectionUtils.ToArrayList(System.Collections.ICollection)">
            <summary>
            Converts an <see cref="T:System.Collections.ICollection"/>instance to an <see cref="T:System.Collections.ArrayList"/> instance.
            </summary>
            <param name="inputCollection">The <see cref="T:System.Collections.ICollection"/> instance to be converted.</param>
            <returns>An <see cref="T:System.Collections.ArrayList"/> instance in which its elements are the elements of the <see cref="T:System.Collections.ICollection"/> instance.</returns>
            <exception cref="T:System.ArgumentNullException">if the <paramref name="inputCollection"/> is null.</exception>
        </member>
        <member name="T:YCH.Util.ConfigurationUtils">
            <summary>
            Utility class for .NET configuration files management.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConfigurationUtils.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.GetSection(System.String)">
            <summary>
            Parses the configuration section.
            </summary>
            <remarks>
            <p>
            Primary purpose of this method is to allow us to parse and 
            load configuration sections using the same API regardless
            of the .NET framework version.
            </p>
            <p>
            If Microsoft paid a bit more attention to preserving backwards
            compatibility we would not even need it, but... :(
            </p>
            </remarks>
            <param name="sectionName">Name of the configuration section.</param>
            <returns>Object created by a corresponding <see cref="T:System.Configuration.IConfigurationSectionHandler"/>.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String,System.Exception,System.String,System.Int32)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <param name="inner">The inner exception.</param>
            <param name="fileName">Name of the configuration file.</param>
            <param name="line">The line where exception occured.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String,System.String,System.Int32)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <param name="fileName">Name of the configuration file.</param>
            <param name="line">The line where exception occured.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String,System.Exception,System.Xml.XmlNode)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <param name="inner">The inner exception.</param>
            <param name="node">XML node where exception occured.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String,System.Xml.XmlNode)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <param name="node">XML node where exception occured.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String,System.Exception)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <param name="inner">The inner exception.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException(System.String)">
            <summary>
            Creates the configuration exception.
            </summary>
            <param name="message">The message to display to the client when the exception is thrown.</param>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.CreateConfigurationException">
            <summary>
            Creates the configuration exception.
            </summary>
            <returns>Configuration exception.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.IsConfigurationException(System.Exception)">
            <summary>
            Determines whether the specified exception is configuration exception.
            </summary>
            <param name="exception">The exception to check.</param>
            <returns>
            	<c>true</c> if the specified exception is configuration exception; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.GetLineNumber(System.Xml.XmlNode)">
            <summary>
            Returns the line number of the specified node.
            </summary>
            <param name="node">Node to get the line number for.</param>
            <returns>The line number of the specified node.</returns>
        </member>
        <member name="M:YCH.Util.ConfigurationUtils.GetFileName(System.Xml.XmlNode)">
            <summary>
            Returns the name of the file specified node is defined in.
            </summary>
            <param name="node">Node to get the file name for.</param>
            <returns>The name of the file specified node is defined in.</returns>
        </member>
        <member name="T:YCH.Util.ConversionUtils">
            <summary>
            Utility methods that are used to convert objects from one type into another.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConversionUtils.cs,v 1.3 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.ConversionUtils.ConvertValueIfNecessary(System.Type,System.Object,System.String)">
            <summary>
            Convert the value to the required <see cref="T:System.Type"/> (if necessary from a string).
            </summary>
            <param name="newValue">The proposed change value.</param>
            <param name="requiredType">
            The <see cref="T:System.Type"/> we must convert to.
            </param>
            <param name="propertyName">Property name, used for error reporting purposes...</param>
            <exception cref="T:YCH.Objects.ObjectsException">
            If there is an internal error.
            </exception>
            <returns>The new value, possibly the result of type conversion.</returns>
        </member>
        <member name="M:YCH.Util.ConversionUtils.CreatePropertyChangeEventArgs(System.String,System.Object,System.Object)">
            <summary>
            Utility method to create a property change event.
            </summary>
            <param name="fullPropertyName">
            The full name of the property that has changed.
            </param>
            <param name="oldValue">The property old value</param>
            <param name="newValue">The property new value</param>
            <returns>
            A new <see cref="T:YCH.Objects.PropertyChangeEventArgs"/>.
            </returns>
        </member>
        <member name="T:YCH.Util.DelegateInfo">
            <summary>
            Discovers the attributes of a <see cref="T:System.Delegate"/>
            <see cref="T:System.Type"/> and provides access to the
            <see cref="T:System.Delegate"/> <see cref="T:System.Type"/>s metadata.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: DelegateInfo.cs,v 1.9 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Util.DelegateInfo.InvocationMethod">
            <summary>
            The method name associated with a delegate invocation.
            </summary>
        </member>
        <member name="M:YCH.Util.DelegateInfo.#ctor(System.Reflection.EventInfo)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Util.DelegateInfo"/> class.
            </summary>
            <param name="eventMeta">
            The event used to extract the delegate <see cref="T:System.Type"/>
            from.
            </param>
            <exception cref="T:System.NullReferenceException">
            if the supplied <paramref name="eventMeta"/> is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.DelegateInfo.#ctor(System.Type)">
            <summary>
            Creates a new instance of the
            <see cref="T:YCH.Util.DelegateInfo"/> class.
            </summary>
            <param name="type">
            The delegate <see cref="T:System.Type"/>.
            </param>
            <exception cref="T:System.ArgumentException">
            If the supplied <see cref="T:System.Type"/> is not a subclass of the
            <see cref="T:System.Delegate"/> class, or is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.DelegateInfo.IsSignatureCompatible(System.Reflection.MethodInfo)">
            <summary>
            Checks to see if the method encapsulated by the supplied method
            metadata is compatible with the method signature associated with
            this delegate type.
            </summary>
            <param name="method">The method to be checked.</param>
            <returns>
            <see langword="true"/> if the method signature is compatible with
            the signature of this delegate; <see langword="false"/> if not, or
            if the supplied <paramref name="method"/> parameter is
            <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.DelegateInfo.GetParameterTypes">
            <summary>
            Gets the <see cref="T:System.Type"/>s of the parameters of the
            method signature associated with this delegate type.
            </summary>
            <remarks>
            <p>
            This method will never return <see langword="null"/>; the returned
            <see cref="T:System.Type"/> array may be empty, but it most certainly
            will not be <see langword="null"/>.
            </p>
            </remarks>
            <returns>
            A <see cref="T:System.Type"/> array of the parameter
            <see cref="T:System.Type"/>s; or the <see cref="F:System.Type.EmptyTypes"/>
            array if the method signature has no parameters.
            </returns>
        </member>
        <member name="M:YCH.Util.DelegateInfo.GetReturnType">
            <summary>
            Gets the return <see cref="T:System.Type"/> of the 
            method signature associated with this delegate type.
            </summary>
            <returns>The return <see cref="T:System.Type"/>.</returns>
        </member>
        <member name="M:YCH.Util.DelegateInfo.GetMethod">
            <summary>
            Gets the metadata about the method signature associated
            with this delegate type.
            </summary>
            <returns>
            The metadata about the method signature associated
            with this delegate type.
            </returns>
        </member>
        <member name="M:YCH.Util.DelegateInfo.IsDelegate(System.Type)">
            <summary>
            Determines whether the supplied <see cref="T:System.Type"/>
            is a <see cref="T:System.Delegate"/> type.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> to be checked.
            </param>
            <returns>
            <see langword="true"/> if the supplied <see cref="T:System.Type"/>
            is a <see cref="T:System.Delegate"/> <see cref="T:System.Type"/>;
            <see langword="false"/> if not or the supplied
            <paramref name="type"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.DelegateInfo.IsSignatureCompatible(System.Reflection.EventInfo,System.Reflection.MethodInfo)">
            <summary>
            Checks if the signature of the supplied <paramref name="handlerMethod"/>
            is compatible with the signature expected by the supplied
            <paramref name="eventMeta"/>.
            </summary>
            <param name="eventMeta">The event to be checked against.</param>
            <param name="handlerMethod">
            The method signature to check for compatibility.
            </param>
            <returns>
            <see langword="true"/> if the signature of the supplied
            <paramref name="handlerMethod"/> is compatible with the signature
            expected by the supplied <paramref name="eventMeta"/>;
            <see langword="false"/> if not or either of the supplied
            parameters is <see langword="null"/>. 
            </returns>
            <seealso cref="M:YCH.Util.DelegateInfo.IsSignatureCompatible(System.Reflection.MethodInfo)"/>
        </member>
        <member name="P:YCH.Util.DelegateInfo.DelegateType">
            <summary>
            The <see cref="T:System.Type"/> of the delegate.
            </summary>
        </member>
        <member name="T:YCH.Util.EventRaiser">
            <summary>
            A utility  class for raising events in a generic and consistent fashion.
            </summary>
            <author>Rick Evans</author>
            <version>$Id: EventUtils.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.EventRaiser.Raise(System.Delegate,System.Object[])">
            <summary>
            Raises the event encapsulated by the supplied
            <paramref name="source"/>, passing the supplied <paramref name="arguments"/>
            to the event.
            </summary>
            <param name="source">The event to be raised.</param>
            <param name="arguments">The arguments to the event.</param>
        </member>
        <member name="M:YCH.Util.EventRaiser.Invoke(System.Delegate,System.Object[])">
            <summary>
            Invokes the supplied <paramref name="sink"/>, passing the supplied
            <paramref name="arguments"/> to the sink.
            </summary>
            <param name="sink">The sink to be invoked.</param>
            <param name="arguments">The arguments to the sink.</param>
        </member>
        <member name="T:YCH.Util.DefensiveEventRaiser">
            <summary>
            Raises events <b>defensively</b>.
            </summary>
            <remarks>
            <p>
            Raising events defensively means that as the raised event is passed to each handler,
            any <see cref="T:System.Exception"/> thrown by a handler will be caught and silently
            ignored.
            </p>
            </remarks>
            <author>Rick Evans</author>
            <version>$Id: EventUtils.cs,v 1.5 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.DefensiveEventRaiser.Invoke(System.Delegate,System.Object[])">
            <summary>
            <b>Defensively</b> invokes the supplied <paramref name="sink"/>, passing the
            supplied <paramref name="arguments"/> to the sink.
            </summary>
            <param name="sink">The sink to be invoked.</param>
            <param name="arguments">The arguments to the sink.</param>
        </member>
        <member name="T:YCH.Util.NumberUtils">
            <summary>
            Various utility methods relating to numbers.
            </summary>
            <remarks>
            <p>
            Mainly for internal use within the framework.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: NumberUtils.cs,v 1.4 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.NumberUtils.IsInteger(System.Object)">
            <summary>
            Determines whether the supplied <paramref name="number"/> is an integer.
            </summary>
            <param name="number">The object to check.</param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="number"/> is an integer.
            </returns>
        </member>
        <member name="M:YCH.Util.NumberUtils.IsDecimal(System.Object)">
            <summary>
            Determines whether the supplied <paramref name="number"/> is a decimal number.
            </summary>
            <param name="number">The object to check.</param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="number"/> is a decimal number.
            </returns>
        </member>
        <member name="M:YCH.Util.NumberUtils.IsNumber(System.Object)">
            <summary>
            Determines whether the supplied <paramref name="number"/> is decimal number.
            </summary>
            <param name="number">The object to check.</param>
            <returns>
            	<c>true</c> if the specified object is decimal number; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:YCH.Util.NumberUtils.IsZero(System.Object)">
            <summary>
            Is the supplied <paramref name="number"/> equal to zero (0)?
            </summary>
            <param name="number">The number to check.</param>
            <returns>
            <see lang="true"/> id the supplied <paramref name="number"/> is equal to zero (0).
            </returns>
        </member>
        <member name="M:YCH.Util.NumberUtils.Negate(System.Object)">
            <summary>
            Negates the supplied <paramref name="number"/>.
            </summary>
            <param name="number">The number to negate.</param>
            <returns>The supplied <paramref name="number"/> negated.</returns>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="number"/> is not a supported numeric type.
            </exception>
        </member>
        <member name="M:YCH.Util.NumberUtils.Add(System.Object,System.Object)">
            <summary>
            Adds the specified numbers.
            </summary>
            <param name="m">The first number.</param>
            <param name="n">The second number.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.Subtract(System.Object,System.Object)">
            <summary>
            Subtracts the specified numbers.
            </summary>
            <param name="m">The first number.</param>
            <param name="n">The second number.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.Multiply(System.Object,System.Object)">
            <summary>
            Multiplies the specified numbers.
            </summary>
            <param name="m">The first number.</param>
            <param name="n">The second number.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.Divide(System.Object,System.Object)">
            <summary>
            Divides the specified numbers.
            </summary>
            <param name="m">The first number.</param>
            <param name="n">The second number.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.Modulus(System.Object,System.Object)">
            <summary>
            Calculates remainder for the specified numbers.
            </summary>
            <param name="m">The first number (dividend).</param>
            <param name="n">The second number (divisor).</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.Power(System.Object,System.Object)">
            <summary>
            Raises first number to the power of the second one.
            </summary>
            <param name="m">The first number.</param>
            <param name="n">The second number.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.CoerceTypes(System.Object@,System.Object@)">
            <summary>
            Coerces the types so they can be compared.
            </summary>
            <param name="m">The right.</param>
            <param name="n">The left.</param>
        </member>
        <member name="M:YCH.Util.NumberUtils.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.NumberUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Util.PathMatcher">
            <summary>
            Support matching of file system paths in a manner similar to that of the
            <see href="http://nant.sourceforge.net">NAnt</see> <c>FileSet</c>.
            </summary>
            <remarks>
            <p>
            Any (back)slashes are converted to forward slashes.
            </p>
            </remarks>
            <example>
            <code>
            // true
            PathMatcher.Match("c:/*.bat", @"c:\autoexec.bat");
            PathMatcher.Match("c:\fo*\*.bat", @"c:/foobar/autoexec.bat");
            PathMatcher.Match("c:\fo?\*.bat", @"c:/foo/autoexec.bat");
            // false
            PathMatcher.Match("c:\fo?\*.bat", @"c:/fo/autoexec.bat");
            </code>
            </example>
            <author>Federico Spinazzi</author>
            <version>$Id: PathMatcher.cs,v 1.5 2005/12/27 15:00:26 fspinazzi Exp $</version>
        </member>
        <member name="M:YCH.Util.PathMatcher.Match(System.String,System.String,System.Boolean)">
            <summary>
            Determines if a given path matches a <c>NAnt</c>-like pattern.
            </summary>
            <param name="pattern">
            A forward or back-slashed fileset-like pattern.
            </param>
            <param name="path">A forward or back-slashed full path.</param>
            <param name="ignoreCase">should the match consider the case</param>
            <returns>
            <see langword="true"/> if the path is matched by the pattern;
            otherwise <see langword="false"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.PathMatcher.Match(System.String,System.String)">
            <summary>
            Determines if a given path matches a <c>NAnt</c>-like pattern.
            </summary>
            <param name="pattern">
            A forward or back-slashed fileset-like pattern.
            </param>
            <param name="path">A forward or back-slashed full path.</param>
            <returns>
            <see langword="true"/> if the path is matched by the pattern;
            otherwise <see langword="false"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.PathMatcher.ForwardifySlashes(System.String)">
            <summary>
            Replaces back(slashes) with forward slashes.
            </summary>
            <param name="path">
            The path or the pattern to modify.
            </param>
            <returns>A forward-slashed string.</returns>
        </member>
        <member name="M:YCH.Util.PathMatcher.BuildRegex(System.String)">
            <summary>
            Helper method to convert a <c>NAnt</c>-like pattern into the
            appropriate pattern for a regular expression.
            </summary>
            <param name="pattern">The <c>NAnt</c>-like pattern.</param>
            <returns>A regex-compatible pattern.</returns>
        </member>
        <member name="M:YCH.Util.PathMatcher.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.PathMatcher"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="T:YCH.Util.Properties">
            <summary>
            An implementation of the Java Properties class.
            </summary>
            <author>Simon White</author>
        </member>
        <member name="M:YCH.Util.Properties.#ctor">
            <summary>
            Creates an empty property list with no default values.
            </summary>
        </member>
        <member name="M:YCH.Util.Properties.#ctor(YCH.Util.Properties)">
            <summary>
            Creates a property list with the specified initial properties.
            </summary>
            <param name="p">The initial properties.</param>
        </member>
        <member name="M:YCH.Util.Properties.Load(System.IO.Stream)">
            <summary>
            Reads a property list (key and element pairs) from the input stream.
            </summary>
            <param name="stream">The stream to load from.</param>
        </member>
        <member name="M:YCH.Util.Properties.Load(System.IO.TextReader)">
            <summary>
            Reads a property list (key and element pairs) from a text reader.
            </summary>
            <param name="textReader">The text reader to load from.</param>
        </member>
        <member name="M:YCH.Util.Properties.Load(System.Collections.IDictionary,System.IO.Stream)">
            <summary>
            Reads a property list (key and element pairs) from the input stream.
            </summary>
            <param name="dictionary">the dictionary to put it in</param>
            <param name="stream">The stream to load from.</param>
        </member>
        <member name="M:YCH.Util.Properties.Load(System.Collections.IDictionary,System.IO.TextReader)">
            <summary>
            Reads a property list (key and element pairs) from a text reader.
            </summary>
            <param name="dictionary">the dictionary to put it in</param>
            <param name="textReader">The text reader to load from.</param>
        </member>
        <member name="M:YCH.Util.Properties.RemoveLeadingWhitespace(System.String)">
            <summary>
            Strips whitespace from the front of the specified string.
            </summary>
            <param name="line">The string.</param>
            <returns>The string with all leading whitespace removed.</returns>
        </member>
        <member name="M:YCH.Util.Properties.SplitLine(System.String)">
            <summary>
            Splits the specified string into a key / value pair.
            </summary>
            <param name="line">The line to split.</param>
            <returns>An array containing the key / value pair.</returns>
        </member>
        <member name="M:YCH.Util.Properties.GetProperty(System.String)">
            <summary>
            Searches for the property with the specified key in this property list.
            </summary>
            <param name="key">The key.</param>
            <returns>The property, or null if the key was not found.</returns>
        </member>
        <member name="M:YCH.Util.Properties.GetProperty(System.String,System.String)">
            <summary>
            Searches for the property with the specified key in this property list.
            </summary>
            <param name="key">The key.</param>
            <param name="def">
            The default value to be returned if the key is not found.
            </param>
            <returns>The property, or the default value.</returns>
        </member>
        <member name="M:YCH.Util.Properties.List(System.IO.Stream)">
            <summary>
            Writes this property list out to the specified stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:YCH.Util.Properties.SetProperty(System.String,System.String)">
            <summary>
            Sets the specified property key / value pair.
            </summary>
            <param name="key">The key.</param>
            <param name="theValue">The value.</param>
        </member>
        <member name="M:YCH.Util.Properties.Store(System.IO.Stream,System.String)">
            <summary>
            Writes the properties in this instance out to the supplied stream.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="header">Arbitrary header information.</param>
        </member>
        <member name="M:YCH.Util.Properties.Remove(System.Object)">
            <summary>
            Removes the key / value pair identified by the supplied key.
            </summary>
            <param name="key">
            The key identifying the key / value pair to be removed.
            </param>
        </member>
        <member name="M:YCH.Util.Properties.Add(System.Object,System.Object)">
            <summary>
            Adds the specified key / object pair to this collection.
            </summary>
            <param name="key">The key.</param>
            <param name="value">The value.</param>
        </member>
        <member name="P:YCH.Util.Properties.Item(System.Object)">
            <summary>
            Adds the specified key / object pair to this collection.
            </summary>
        </member>
        <member name="T:YCH.Util.ReflectionUtils">
            <summary>
            Various reflection related methods that are missing from the standard library.
            </summary>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Aleksandar Seovic (.Net)</author>
            <version>$Id: ReflectionUtils.cs,v 1.31 2006/04/13 23:00:29 bbaia Exp $</version>
        </member>
        <member name="F:YCH.Util.ReflectionUtils.AllMembersCaseInsensitiveFlags">
            <summary>
            Convenience <see cref="T:System.Reflection.BindingFlags"/> value that will
            match all private and public, static and instance members on a class
            in a case inSenSItivE fashion.
            </summary>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetSignature(System.Type,System.String,System.Type[])">
            <summary>
            Returns signature for the specified <see cref="T:System.Type"/>, method name and argument
            <see cref="T:System.Type"/>s.
            </summary>
            <param name="type">The <see cref="T:System.Type"/> the method is in.</param>
            <param name="method">The method name.</param>
            <param name="argumentTypes">
            The argument <see cref="T:System.Type"/>s.
            </param>
            <returns>The method signature.</returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetMethod(System.Type,System.String,System.Type[])">
            <summary>
            Returns method for the specified <see cref="T:System.Type"/>, method
            name and argument
            <see cref="T:System.Type"/>s.
            </summary>
            <param name="targetType">
            The target <see cref="T:System.Type"/> to find the method on.
            </param>
            <param name="method">The method to find.</param>
            <param name="argumentTypes">
            The argument <see cref="T:System.Type"/>s. May be
            <see langword="null"/> if the method has no arguments.
            </param>
            <returns>The target method.</returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetParameterTypes(System.Reflection.MethodBase)">
            <summary>
            Returns an array of parameter <see cref="T:System.Type"/>s for the specified method
            or constructor.
            </summary>
            <param name="method">The method (or constructor).</param>
            <returns>An array containing the parameter <see cref="T:System.Type"/>s.</returns>
            <exception cref="T:System.ArgumentNullException">
            If <paramref name="method"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetParameterTypes(System.Reflection.ParameterInfo[])">
            <summary>
            Returns an array of parameter <see cref="T:System.Type"/>s for the
            specified parameter info array.
            </summary>
            <param name="args">The parameter info array.</param>
            <returns>An array containing parameter <see cref="T:System.Type"/>.</returns>
            <exception cref="T:System.ArgumentNullException">
            If <paramref name="args"/> is <see langword="null"/> or any of the
            elements <paramref name="args"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetMostSpecificMethod(System.Reflection.MethodInfo,System.Type)">
            <summary>
            Finds that method on the supplied <paramref name="type"/> that most
            closely matches the supplied <paramref name="method"/>.
            if there is one.
            </summary>
            <remarks>
            <p>
            For example, the supplied <paramref name="method"/> may be
            <c>IFoo.Bar()</c> (i.e. the <c>Bar()</c> method from the
            <c>IFoo</c> interface), and the supplied <paramref name="type"/>
            may be the <c>DefaultFoo</c> class that just so happens to declare
            a <c>Bar()</c> method. This method will return the
            <c>DefaultFoo.Bar()</c> method because this method most closely
            matches the name and parameters of the supplied
            <paramref name="method"/>. This is useful because it enables
            attributes on that method to be found.
            </p>
            </remarks>
            <param name="method">
            The method to be invoked, which may come from an interface.
            </param>
            <param name="type">
            The target <see cref="T:System.Type"/> for the current invocation.
            May be <see langword="null"/> or may not even implement the method.
            </param>
            <returns>
            The more specific method, or the original method if the
            <paramref name="type"/> doesn't specialize it or implement
            it, or is <see langword="null"/>.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            If <paramref name="method"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.ToInterfaceArray(System.String[])">
            <summary>
            Convenience method to convert a string array of interface names to
            a <see cref="T:System.Type"/> array.
            </summary>
            <param name="interfaceNames">
            An array of valid interface names. Each name must include the full
            interface and assembly name.
            </param>
            <returns>An array of interface <see cref="T:System.Type"/>s.</returns>
            <exception cref="T:System.TypeLoadException">
            If any of the interfaces can't be loaded.
            </exception>
            <exception cref="T:System.ArgumentException">
            If any of the <see cref="T:System.Type"/>s specified is not an interface.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If <paramref name="interfaceNames"/> (or any of its elements ) is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.PropertyIsIndexer(System.String,System.Type)">
            <summary>
            Is the supplied <paramref name="propertyName"/> the default indexer for the
            supplied <paramref name="type"/>?
            </summary>
            <param name="propertyName">
            The name of the property on the supplied <paramref name="type"/> to be checked.
            </param>
            <param name="type">
            The <see cref="T:System.Type"/>  to be checked.
            </param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="propertyName"/> is the
            default indexer for the supplied <paramref name="type"/>.
            </returns>
            <exception cref="T:System.NullReferenceException">
            If the supplied <paramref name="type"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.MethodIsOnOneOfTheseInterfaces(System.Reflection.MethodBase,System.Type[])">
            <summary>
            Is the supplied <paramref name="method"/> declared on one of these interfaces?
            </summary>
            <param name="method">The method to check.</param>
            <param name="interfaces">The array of interfaces we want to check.</param>
            <returns>
            <see lang="true"/> if the method is declared on one of these interfaces.
            </returns>
            <exception cref="T:System.ArgumentException">
            If any of the <see cref="T:System.Type"/>s specified is not an interface.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If <paramref name="method"/> or any of the specified interfaces is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetDefaultValue(System.Type)">
            <summary>
            Returns the default value for the specified <see cref="T:System.Type"/>
            </summary>
            <remarks>
            <p>
            Follows the standard .NET conventions for default values where
            relevant; for example, all numeric types default to the value
            <c>0</c>.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to return default value for.
            </param>
            <returns>
            The default value for the specified <see cref="T:System.Type"/>.
            </returns>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="type"/> is an enumerated type that
            has no values.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetDefaultValues(System.Type[])">
            <summary>
            Returns an array consisting of the default values for the supplied
            <paramref name="types"/>.
            </summary>
            <param name="types">
            The array of <see cref="T:System.Type"/>s to return default values for.
            </param>
            <returns>
            An array consisting of the default values for the supplied
            <paramref name="types"/>.
            </returns>
            <exception cref="T:System.ArgumentException">
            If any of the elements in the supplied <paramref name="types"/>
            array is an enumerated type that has no values.
            </exception>
            <seealso cref="M:YCH.Util.ReflectionUtils.GetDefaultValue(System.Type)"/>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.ParameterTypesMatch(System.Reflection.MethodInfo,System.Type[])">
            <summary>
            Checks that the parameter <see cref="T:System.Type"/>s of the
            supplied <paramref name="candidate"/> match the parameter
            <see cref="T:System.Type"/>s of the supplied
            <paramref name="parameterTypes"/>.
            </summary>
            <param name="candidate">The method to be checked.</param>
            <param name="parameterTypes">
            The array of parameter <see cref="T:System.Type"/>s to check against.
            </param>
            <returns>
            <see langword="true"/> if the parameter <see cref="T:System.Type"/>s
            match.
            </returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetTypes(System.Object[])">
            <summary>
            Returns an array containing the <see cref="T:System.Type"/>s of the
            objects in the supplied array.
            </summary>
            <param name="args">
            The objects array for which the corresponding <see cref="T:System.Type"/>s
            are needed.
            </param>
            <returns>
            An array containing the <see cref="T:System.Type"/>s of the objects
            in the supplied array; this array will be empty (but not
            <see langword="null"/> if the supplied <paramref name="args"/>
            is null or has no elements.
            </returns>
            <example>
            <p>
            [C#]<br/>
            Given an array containing the following objects,
            <code>[83, "Foo", new object ()]</code>, the <see cref="T:System.Type"/>
            array returned from this method call would consist of the following
            <see cref="T:System.Type"/> elements...
            <code>[Int32, String, Object]</code>.
            </p>
            </example>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.HasAtLeastOneMethodWithName(System.Type,System.String)">
            <summary>
            Does the given <see cref="T:System.Type"/> and/or it's superclasses
            have at least one or more methods with the given name (with any
            argument types)?
            </summary>
            <remarks>
            <p>
            Includes non-public methods in the methods searched.
            </p>
            </remarks>
            <param name="type">
            The <see cref="T:System.Type"/> to be checked.
            </param>
            <param name="name">
            The name of the method to be searched for. Case inSenSItivE.
            </param>
            <returns>
            <see langword="true"/> if the given <see cref="T:System.Type"/> or / and it's
            superclasses have at least one or more methods (with any argument types);
            <see langword="false"/> if not, or either of the parameters is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.CreateCustomAttribute(System.Type,System.Object[],System.Attribute)">
            <summary>
            Creates a custom <see cref="T:System.Attribute"/>.
            </summary>
            <remarks>
            <p>
            Note that if a non-<see langword="null"/> <paramref name="sourceAttribute"/>
            is supplied, any read write properties exposed by the <paramref name="sourceAttribute"/>
            will be used to overwrite values that may have been passed in via the
            <paramref name="ctorArgs"/>. That is, the <paramref name="ctorArgs"/> will be used
            to initialize the custom attribute, and then any read-write properties on the
            <paramref name="sourceAttribute"/> will be plugged in.
            </p>
            </remarks>
            <param name="type">
            The desired <see cref="T:System.Attribute"/> <see cref="T:System.Type"/>.
            </param>
            <param name="ctorArgs">
            Any constructor arguments for the attribute (may be <see langword="null"/>
            in the case of no arguments).
            </param>
            <param name="sourceAttribute">
            Source attribute to copy properties from (may be <see langword="null"/>).
            </param>
            <returns>A custom attribute builder.</returns>
            <exception cref="T:System.ArgumentNullException">
            If the <paramref name="type"/> parameter is <see langword="null"/>.
            </exception>
            <exception cref="T:System.ArgumentNullException">
            If the <paramref name="type"/> parameter is not a <see cref="T:System.Type"/>
            that derives from the <see cref="T:System.Attribute"/> class.
            </exception>
            <seealso cref="T:System.Reflection.Emit.CustomAttributeBuilder"/>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.CreateCustomAttribute(System.Type,System.Attribute)">
            <summary>
            Creates a custom <see cref="T:System.Attribute"/>.
            </summary>
            <param name="type">
            The desired <see cref="T:System.Attribute"/> <see cref="T:System.Type"/>.
            </param>
            <param name="sourceAttribute">
            Source attribute to copy properties from (may be <see langword="null"/>).
            </param>
            <returns>A custom attribute builder.</returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.CreateCustomAttribute(System.Attribute)">
            <summary>
            Creates a custom <see cref="T:System.Attribute"/>.
            </summary>
            <param name="sourceAttribute">
            The source attribute to copy properties from.
            </param>
            <returns>A custom attribute builder.</returns>
            <exception cref="T:System.NullReferenceException">
            If the supplied <paramref name="sourceAttribute"/> is
            <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.CreateCustomAttribute(System.Type)">
            <summary>
            Creates a custom <see cref="T:System.Attribute"/>.
            </summary>
            <param name="type">
            The desired <see cref="T:System.Attribute"/> <see cref="T:System.Type"/>.
            </param>
            <returns>A custom attribute builder.</returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.CreateCustomAttribute(System.Type,System.Object[])">
            <summary>
            Creates a custom <see cref="T:System.Attribute"/>.
            </summary>
            <param name="type">
            The desired <see cref="T:System.Attribute"/> <see cref="T:System.Type"/>.
            </param>
            <param name="ctorArgs">
            Any constructor arguments for the attribute (may be <see langword="null"/>
            in the case of no arguments).
            </param>
            <returns>A custom attribute builder.</returns>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.GetMatchingMethods(System.Type,System.Reflection.MethodInfo[],System.Boolean)">
            <summary>
            Tries to find matching methods in the specified <see cref="T:System.Type"/>
            for each method in the supplied <paramref name="methods"/> list.
            </summary>
            <param name="type">
            The <see cref="T:System.Type"/> to look for matching methods in.
            </param>
            <param name="methods">The methods to match.</param>
            <param name="strict">
            A flag that specifies whether to throw an exception if a matching
            method is not found.
            </param>
            <returns>A list of the matched methods.</returns>
            <exception cref="T:System.ArgumentNullException">
            If either of the <paramref name="type"/> or
            <paramref name="methods"/> parameters are <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.ReflectionUtils.TypeOfOrType(System.Object)">
            <summary>
            Returns the <see cref="T:System.Type"/> of the supplied
            <paramref name="source"/>.
            </summary>
            <remarks>
            <p>
            If the <paramref name="source"/> is a <see cref="T:System.Type"/>
            instance, the return value of this method call with be the
            <paramref name="source"/> parameter cast to a
            <see cref="T:System.Type"/>. If the <paramref name="source"/> is
            anything other than a <see cref="T:System.Type"/>, the return value
            will be the result of invoking the <paramref name="source"/>'s
            <see cref="M:System.Object.GetType"/> method.
            </p>
            </remarks>
            <param name="source">
            A <see cref="T:System.Type"/> or <see cref="T:System.Object"/> instance.
            </param>
            <returns>
            The <paramref name="source"/>argument if it is a
            <see cref="T:System.Type"/> or the result of invoking
            <see cref="M:System.Object.GetType"/> on the argument if it
            is an <see cref="T:System.Object"/>.
            </returns>
            <exception cref="T:System.NullReferenceException">
            If the <paramref name="source"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="T:YCH.Util.StringUtils">
            <summary>
            Miscellaneous <see cref="T:System.String"/> utility methods.
            </summary>
            <remarks>
            <p>
            Mainly for internal use within the framework.
            </p>
            </remarks>
            <author>Rod Johnson</author>
            <author>Juergen Hoeller</author>
            <author>Keith Donald</author>
            <author>Aleksandar Seovic (.NET)</author>
            <author>Mark Pollack (.NET)</author>
            <author>Rick Evans (.NET)</author>
            <version>$Id: StringUtils.cs,v 1.29 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="F:YCH.Util.StringUtils.AntExpressionPrefix">
            <summary>
            The string that signals the start of an Ant-style expression.
            </summary>
        </member>
        <member name="F:YCH.Util.StringUtils.AntExpressionSuffix">
            <summary>
            The string that signals the end of an Ant-style expression.
            </summary>
        </member>
        <member name="F:YCH.Util.StringUtils.EmptyStrings">
            <summary>
            An empty array of <see cref="T:System.String"/> instances.
            </summary>
        </member>
        <member name="M:YCH.Util.StringUtils.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Util.StringUtils"/> class.
            </summary>
            <remarks>
            <p>
            This is a utility class, and as such exposes no public constructors.
            </p>
            </remarks>
        </member>
        <member name="M:YCH.Util.StringUtils.Split(System.String,System.String,System.Boolean,System.Boolean)">
            <summary>
            Tokenize the given <see cref="T:System.String"/> into a
            <see cref="T:System.String"/> array.
            </summary>
            <remarks>
            <p>
            If <paramref name="s"/> is <see langword="null"/>, returns an empty
            <see cref="T:System.String"/> array.
            </p>
            <p>
            If <paramref name="delimiters"/> is <see langword="null"/> or the empty
            <see cref="T:System.String"/>, returns a <see cref="T:System.String"/> array with one
            element: <paramref name="s"/> itself.
            </p>
            </remarks>
            <param name="s">The <see cref="T:System.String"/> to tokenize.</param>
            <param name="delimiters">
            The delimiter characters, assembled as a <see cref="T:System.String"/>.
            </param>
            <param name="trimTokens">
            Trim the tokens via <see cref="M:System.String.Trim"/>.
            </param>
            <param name="ignoreEmptyTokens">
            Omit empty tokens from the result array.</param>
            <returns>An array of the tokens.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.CommaDelimitedListToStringArray(System.String)">
            <summary>
            Convert a CSV list into an array of <see cref="T:System.String"/>s.
            </summary>
            <param name="s">A CSV list.</param>
            <returns>
            An array of <see cref="T:System.String"/>s, or the empty array
            if <paramref name="s"/> is <see langword="null"/>.
            </returns>
        </member>
        <member name="M:YCH.Util.StringUtils.DelimitedListToStringArray(System.String,System.String)">
            <summary>
            Take a <see cref="T:System.String"/> which is a delimited list
            and convert it to a <see cref="T:System.String"/> array.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="delimiter"/> is a
            <cref lang="null"/> or zero-length string, then a single element
            <see cref="T:System.String"/> array composed of the supplied
            <paramref name="input"/> <see cref="T:System.String"/> will be 
            eturned. If the supplied <paramref name="input"/>
            <see cref="T:System.String"/> is <cref lang="null"/>, then an empty,
            zero-length <see cref="T:System.String"/> array will be returned.
            </p>
            </remarks>
            <param name="input">
            The <see cref="T:System.String"/> to be parsed.
            </param>
            <param name="delimiter">
            The delimeter (this will not be returned). Note that only the first
            character of the supplied <paramref name="delimiter"/> is used.
            </param>
            <returns>
            An array of the tokens in the list.
            </returns>
        </member>
        <member name="M:YCH.Util.StringUtils.CollectionToDelimitedString(System.Collections.ICollection,System.String)">
            <summary>
            Convenience method to return an
            <see cref="T:System.Collections.ICollection"/> as a delimited
            (e.g. CSV) <see cref="T:System.String"/>.
            </summary>
            <param name="c">
            The <see cref="T:System.Collections.ICollection"/> to parse.
            </param>
            <param name="delimiter">
            The delimiter to use (probably a ',').
            </param>
            <returns>The delimited string representation.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.CollectionToCommaDelimitedString(System.Collections.ICollection)">
            <summary>
            Convenience method to return an
            <see cref="T:System.Collections.ICollection"/> as a CSV
            <see cref="T:System.String"/>.
            </summary>
            <param name="collection">
            The <see cref="T:System.Collections.ICollection"/> to display.
            </param>
            <returns>The delimited string representation.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.ArrayToCommaDelimitedString(System.Object[])">
            <summary>
            Convenience method to return an array as a CSV
            <see cref="T:System.String"/>.
            </summary>
            <param name="source">
            The array to parse. Elements may be of any type (
            <see cref="M:System.Object.ToString"/> will be called on each
            element).
            </param>
        </member>
        <member name="M:YCH.Util.StringUtils.ArrayToDelimitedString(System.Object[],System.String)">
            <summary>
            Convenience method to return a <see cref="T:System.String"/>
            array as a delimited (e.g. CSV) <see cref="T:System.String"/>.
            </summary>
            <param name="source">
            The array to parse. Elements may be of any type (
            <see cref="M:System.Object.ToString"/> will be called on each
            element).
            </param>
            <param name="delimiter">
            The delimiter to use (probably a ',').
            </param>
        </member>
        <member name="M:YCH.Util.StringUtils.HasLength(System.String)">
            <summary>Checks if a string has length.</summary>
            <param name="target">
            The string to check, may be <see langword="null"/>.
            </param>
            <returns>
            <see langword="true"/> if the string has length and is not
            <see langword="null"/>.
            </returns>
            <example>
            <code lang="C#">
            StringUtils.HasLength(null) = false
            StringUtils.HasLength("") = false
            StringUtils.HasLength(" ") = true
            StringUtils.HasLength("Hello") = true
            </code>
            </example>
        </member>
        <member name="M:YCH.Util.StringUtils.HasText(System.String)">
            <summary>
            Checks if a <see cref="T:System.String"/> has text.
            </summary>
            <remarks>
            <p>
            More specifically, returns <see langword="true"/> if the string is
            not <see langword="null"/>, it's <see cref="P:System.String.Length"/> is &gt;
            zero <c>(0)</c>, and it has at least one non-whitespace character.
            </p>
            </remarks>
            <param name="target">
            The string to check, may be <see langword="null"/>.
            </param>
            <returns>
            <see langword="true"/> if the <paramref name="target"/> is not
            <see langword="null"/>,
            <see cref="P:System.String.Length"/> &gt; zero <c>(0)</c>, and does not consist
            solely of whitespace.
            </returns>
            <example>
            <code language="C#">
            StringUtils.HasText(null) = false
            StringUtils.HasText("") = false
            StringUtils.HasText(" ") = false
            StringUtils.HasText("12345") = true
            StringUtils.HasText(" 12345 ") = true
            </code>
            </example>
        </member>
        <member name="M:YCH.Util.StringUtils.IsNullOrEmpty(System.String)">
            <summary>
            Checks if a <see cref="T:System.String"/> is <see langword="null"/>
            or an empty string.
            </summary>
            <remarks>
            <p>
            More specifically, returns <see langword="false"/> if the string is
            <see langword="null"/>, it's <see cref="P:System.String.Length"/> is equal
            to zero <c>(0)</c>, or it is composed entirely of whitespace
            characters.
            </p>
            </remarks>
            <param name="target">
            The string to check, may (obviously) be <see langword="null"/>.
            </param>
            <returns>
            <see langword="true"/> if the <paramref name="target"/> is
            <see langword="null"/>, has a length equal to zero <c>(0)</c>, or
            is composed entirely of whitespace characters.
            </returns>
            <example>
            <code language="C#">
            StringUtils.IsNullOrEmpty(null) = true
            StringUtils.IsNullOrEmpty("") = true
            StringUtils.IsNullOrEmpty(" ") = true
            StringUtils.IsNullOrEmpty("12345") = false
            StringUtils.IsNullOrEmpty(" 12345 ") = false
            </code>
            </example>
        </member>
        <member name="M:YCH.Util.StringUtils.StripFirstAndLastCharacter(System.String)">
            <summary>
            Strips first and last character off the string.
            </summary>
            <param name="text">The string to strip.</param>
            <returns>The stripped string.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.GetAntExpressions(System.String)">
            <summary>
            Returns a list of Ant-style expressions from the specified text.
            </summary>
            <param name="text">The text to inspect.</param>
            <returns>
            A list of expressions that exist in the specified text.
            </returns>
            <exception cref="T:System.FormatException">
            If any of the expressions in the supplied <paramref name="text"/>
            is empty (<c>${}</c>).
            </exception>
        </member>
        <member name="M:YCH.Util.StringUtils.SetAntExpression(System.String,System.String,System.Object)">
            <summary>
            Replaces Ant-style expression placeholder with expression value.
            </summary>
            <remarks>
            <p>
            
            </p>
            </remarks>
            <param name="text">The string to set the value in.</param>
            <param name="expression">The name of the expression to set.</param>
            <param name="expValue">The expression value.</param>
            <returns>
            A new string with the expression value set; the
            <see cref="F:System.String.Empty"/> value if the supplied
            <paramref name="text"/> is <see langword="null"/>, has a length
            equal to zero <c>(0)</c>, or is composed entirely of whitespace
            characters.
            </returns>
        </member>
        <member name="M:YCH.Util.StringUtils.Surround(System.Object,System.Object)">
            <summary>
            Surrounds (prepends and appends) the string value of the supplied
            <paramref name="fix"/> to the supplied <paramref name="target"/>.
            </summary>
            <remarks>
            <p>
            The return value of this method call is always guaranteed to be non
            <see langword="null"/>. If every value passed as a parameter to this method is
            <see langword="null"/>, the <see cref="F:System.String.Empty"/> string will be returned.
            </p>
            </remarks>
            <param name="fix">
            The pre<b>fix</b> and suf<b>fix</b> that respectively will be prepended and
            appended to the target <paramref name="target"/>. If this value
            is not a <see cref="T:System.String"/> value, it's attendant
            <see cref="M:System.Object.ToString"/> value will be used.
            </param>
            <param name="target">
            The target that is to be surrounded. If this value is not a
            <see cref="T:System.String"/> value, it's attendant
            <see cref="M:System.Object.ToString"/> value will be used.
            </param>
            <returns>The surrounded string.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.Surround(System.Object,System.Object,System.Object)">
            <summary>
            Surrounds (prepends and appends) the string values of the supplied
            <paramref name="prefix"/> and <paramref name="suffix"/> to the supplied
            <paramref name="target"/>.
            </summary>
            <remarks>
            <p>
            The return value of this method call is always guaranteed to be non
            <see langword="null"/>. If every value passed as a parameter to this method is
            <see langword="null"/>, the <see cref="F:System.String.Empty"/> string will be returned.
            </p>
            </remarks>
            <param name="prefix">
            The value that will be prepended to the <paramref name="target"/>. If this value
            is not a <see cref="T:System.String"/> value, it's attendant
            <see cref="M:System.Object.ToString"/> value will be used.
            </param>
            <param name="target">
            The target that is to be surrounded. If this value is not a
            <see cref="T:System.String"/> value, it's attendant
            <see cref="M:System.Object.ToString"/> value will be used.
            </param>
            <param name="suffix">
            The value that will be appended to the <paramref name="target"/>. If this value
            is not a <see cref="T:System.String"/> value, it's attendant
            <see cref="M:System.Object.ToString"/> value will be used.
            </param>
            <returns>The surrounded string.</returns>
        </member>
        <member name="M:YCH.Util.StringUtils.ConvertEscapedCharacters(System.String)">
            <summary>
            Converts escaped characters (for example "\t") within a string
            to their real character.
            </summary>
            <param name="inputString">The string to convert.</param>
            <returns>The converted string.</returns>
        </member>
        <member name="T:YCH.Util.TypeResolver">
            <summary>
            Resolves a <see cref="T:System.Type"/> by name.
            </summary>
            <version>$Id: TypeResolver.cs,v 1.20 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.TypeResolver.Resolve(System.String)">
            <summary>
            Resolves the supplied <paramref name="typeName"/> to a
            <see cref="T:System.Type"/> instance.
            </summary>
            <param name="typeName">
            The unresolved name of a <see cref="T:System.Type"/>.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/> instance.
            </returns>
            <exception cref="T:System.TypeLoadException">
            If the supplied <paramref name="typeName"/> could not be resolved
            to a <see cref="T:System.Type"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.TypeResolver.ResolveType(System.String)">
            <summary>
            Resolves the supplied <paramref name="typeName"/> to a
            <see cref="T:System.Type"/>
            instance.
            </summary>
            <param name="typeName">
            The (possibly partially assembly qualified) name of a
            <see cref="T:System.Type"/>.
            </param>
            <returns>
            A resolved <see cref="T:System.Type"/> instance.
            </returns>
            <exception cref="T:System.TypeLoadException">
            If the supplied <paramref name="typeName"/> could not be resolved
            to a <see cref="T:System.Type"/>.
            </exception>
        </member>
        <member name="M:YCH.Util.TypeResolver.LoadTypeDirectlyFromAssembly(YCH.Util.TypeResolver.TypeAssemblyInfo)">
            <summary>
            Uses <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/>
            to load an <see cref="T:System.Reflection.Assembly"/> and then the attendant
            <see cref="T:System.Type"/> referred to by the <paramref name="typeInfo"/>
            parameter.
            </summary>
            <remarks>
            <p>
            <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/> is
            deprecated in .NET 2.0, but is still used here (even when this class is
            compiled for .NET 2.0);
            <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/> will
            still resolve (non-.NET Framework) local assemblies when given only the
            display name of an assembly (the behaviour for .NET Framework assemblies
            and strongly named assemblies is documented in the docs for the
            <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/> method).
            </p>
            </remarks>
            <param name="typeInfo">
            The assembly and type to be loaded.
            </param>
            <returns>
            A <see cref="T:System.Type"/>, or <see lang="null"/>.
            </returns>
            <exception cref="T:System.Exception">
            <see cref="M:System.Reflection.Assembly.LoadWithPartialName(System.String)"/>
            </exception>
        </member>
        <member name="M:YCH.Util.TypeResolver.LoadTypeByIteratingOverAllLoadedAssemblies(YCH.Util.TypeResolver.TypeAssemblyInfo)">
            <summary>
            Uses <see cref="M:System.AppDomain.CurrentDomain.GetAssemblies()"/>
            to load the attendant <see cref="T:System.Type"/> referred to by 
            the <paramref name="typeInfo"/> parameter.
            </summary>
            <param name="typeInfo">
            The type to be loaded.
            </param>
            <returns>
            A <see cref="T:System.Type"/>, or <see lang="null"/>.
            </returns>
        </member>
        <member name="T:YCH.Util.TypeResolver.TypeAssemblyInfo">
            <summary>
            Holds data about a <see cref="T:System.Type"/> and it's
            attendant <see cref="T:System.Reflection.Assembly"/>.
            </summary>
        </member>
        <member name="F:YCH.Util.TypeResolver.TypeAssemblyInfo.TypeAssemblySeparator">
            <summary>
            The string that separates a <see cref="T:System.Type"/> name
            from the name of it's attendant <see cref="T:System.Reflection.Assembly"/>
            in an assembly qualified type name.
            </summary>
        </member>
        <member name="M:YCH.Util.TypeResolver.TypeAssemblyInfo.#ctor(System.String)">
            <summary>
            Creates a new instance of the TypeAssemblyInfo class.
            </summary>
            <param name="unresolvedTypeName">
            The unresolved name of a <see cref="T:System.Type"/>.
            </param>
        </member>
        <member name="P:YCH.Util.TypeResolver.TypeAssemblyInfo.TypeName">
            <summary>
            The (unresolved) type name portion of the original type name.
            </summary>
        </member>
        <member name="P:YCH.Util.TypeResolver.TypeAssemblyInfo.AssemblyName">
            <summary>
            The (unresolved, possibly partial) name of the attandant assembly.
            </summary>
        </member>
        <member name="P:YCH.Util.TypeResolver.TypeAssemblyInfo.IsAssemblyQualified">
            <summary>
            Is the type name being resolved assembly qualified?
            </summary>
        </member>
        <member name="T:YCH.Util.XmlUtils">
            <summary>
            XML utility methods.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: XmlUtils.cs,v 1.2 2006/04/09 07:19:00 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Util.XmlUtils.CreateValidatingReader(System.IO.Stream,System.Xml.Schema.XmlSchemaCollection,System.Xml.Schema.ValidationEventHandler)">
            <summary>
            Gets an appropriate <see cref="T:System.Xml.XmlReader"/> implementation
            for the supplied <see cref="T:System.IO.Stream"/>.
            </summary>
            <param name="stream">The XML <see cref="T:System.IO.Stream"/> that is going to be read.</param>
            <param name="schemas">XML schemas that should be used for validation.</param>
            <param name="eventHandler">Validation event handler.</param>
            <returns>
            A validating <see cref="T:System.Xml.XmlReader"/> implementation.
            </returns>
        </member>
        <member name="T:YCH.Validation.Actions.ErrorMessageAction">
            <summary>
            Implementation of <see cref="T:YCH.Validation.IValidationAction"/> that adds error message
            to the validation errors container.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ErrorMessageAction.cs,v 1.4 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Validation.BaseValidationAction">
            <summary>
            Abstract base class that should be extended by all
            validation actions.
            </summary>
            <remarks>
            <p>
            This class implements template <c>Execute</c> method
            and defines <c>OnValid</c> and <c>OnInvalid</c> methods that 
            can be overriden
            by specific validation actions.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: BaseValidationAction.cs,v 1.5 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Validation.IValidationAction">
            <summary>
            An action that should be executed after validator is evaluated.
            </summary>
            <remarks>
            <p>
            This interface allows us to define the actions that should be executed
            after validation in a generic fashion.
            </p>
            <p>
            For example, addition of error messages to validation errors collection
            is performed by one specific implementation of this interface, <see cref="T:YCH.Validation.Actions.ErrorMessageAction"/>.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: IValidationAction.cs,v 1.3 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.IValidationAction.Execute(System.Boolean,System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Executes the action.
            </summary>
            <param name="isValid">Whether associated validator is valid or not.</param>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidationAction.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.BaseValidationAction"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.BaseValidationAction.Execute(System.Boolean,System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Executes the action.
            </summary>
            <param name="isValid">Whether associated validator is valid or not.</param>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidationAction.OnValid(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Called when associated validator is valid.
            </summary>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidationAction.OnInvalid(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Called when associated validator is not valid.
            </summary>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidationAction.EvaluateWhen(System.Object,System.Collections.IDictionary)">
            <summary>
            Evaluates 'when' expression.
            </summary>
            <param name="rootContext">Root context to use for expression evaluation.</param>
            <param name="contextParams">Additional context parameters.</param>
            <returns><c>True</c> if the condition is true, <c>False</c> otherwise.</returns>
        </member>
        <member name="P:YCH.Validation.BaseValidationAction.When">
            <summary>
            Gets or sets the expression that determines if this validator should be evaluated.
            </summary>
            <value>The expression that determines if this validator should be evaluated.</value>
        </member>
        <member name="M:YCH.Validation.Actions.ErrorMessageAction.#ctor(System.String,System.String[])">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.Actions.ErrorMessageAction"/> class.
            </summary>
            <param name="messageId">Error message resource identifier.</param>
            <param name="providers">Names of the error providers this message should be added to.</param>
        </member>
        <member name="M:YCH.Validation.Actions.ErrorMessageAction.OnInvalid(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Called when associated validator is invalid.
            </summary>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.Actions.ErrorMessageAction.CreateErrorMessage(System.Object,System.Collections.IDictionary)">
            <summary>
            Resolves the error message.
            </summary>
            <param name="validationContext">Validation context to resolve message parameters against.</param>
            <param name="contextParams">Additional context parameters.</param>
            <returns>Resolved error message</returns>
        </member>
        <member name="M:YCH.Validation.Actions.ErrorMessageAction.ResolveMessageParameters(System.Collections.IList,System.Object,System.Collections.IDictionary)">
            <summary>
            Resolves the message parameters.
            </summary>
            <param name="messageParams">List of parameters to resolve.</param>
            <param name="validationContext">Validation context to resolve parameters against.</param>
            <param name="contextParams">Additional context parameters.</param>
            <returns>Resolved message parameters.</returns>
        </member>
        <member name="P:YCH.Validation.Actions.ErrorMessageAction.Parameters">
            <summary>
            Sets the expressions that should be resolved to error message parameters.
            </summary>
            <value>The expressions that should be resolved to error message parameters.</value>
        </member>
        <member name="T:YCH.Validation.Actions.ExpressionAction">
            <summary>
            Implementation of <see cref="T:YCH.Validation.IValidationAction"/> that allows you
            to define YCH.NET expressions that should be evaluated after
            validation.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ExpressionAction.cs,v 1.5 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.Actions.ExpressionAction.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.Actions.ExpressionAction"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.Actions.ExpressionAction.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.Actions.ExpressionAction"/> class.
            </summary>
            <param name="onValid">Expression to execute when validator is valid.</param>
            <param name="onInvalid">Expression to execute when validator is not valid.</param>
        </member>
        <member name="M:YCH.Validation.Actions.ExpressionAction.#ctor(YCH.Expressions.IExpression,YCH.Expressions.IExpression)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.Actions.ExpressionAction"/> class.
            </summary>
            <param name="onValid">Expression to execute when validator is valid.</param>
            <param name="onInvalid">Expression to execute when validator is not valid.</param>
        </member>
        <member name="M:YCH.Validation.Actions.ExpressionAction.OnValid(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Called when associated validator is valid.
            </summary>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="M:YCH.Validation.Actions.ExpressionAction.OnInvalid(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Called when associated validator is invalid.
            </summary>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="P:YCH.Validation.Actions.ExpressionAction.Valid">
            <summary>
            Gets or sets the expression to execute when validator is valid.
            </summary>
            <value>The expression to execute when validator is valid.</value>
        </member>
        <member name="P:YCH.Validation.Actions.ExpressionAction.Invalid">
            <summary>
            Gets or sets the expression to execute when validator is not valid.
            </summary>
            <value>The expression to execute when validator is not valid.</value>
        </member>
        <member name="T:YCH.Validation.ConditionValidator">
            <summary>
            Evaluates validator test using condition evaluator.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ConditionValidator.cs,v 1.5 2006/04/09 07:19:04 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Validation.BaseValidator">
            <summary>
            Base class that defines common properties for all validators.
            </summary>
            <remarks>
            <p>
            Custom validators should always extend this class instead of 
            simply implementing <see cref="T:YCH.Validation.IValidator"/> interface, in 
            order to inherit common validator functionality.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: BaseValidator.cs,v 1.11 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Validation.IValidator">
            <summary>
            An object that can validate application-specific objects.
            </summary>
            <remarks>
            <p>
            The primary motivation for this interface is to enable validation to be
            decoupled from the (user) interface and placed in business objects.
            </p>
            <p>
            Application developers writing their own custom
            <see cref="T:YCH.Validation.IValidator"/> implementations will
            typically not implement this interface directly. In most cases, custom
            validators woud be better served deriving from the
            <see lang="abstract"/> <see cref="T:YCH.Validation.BaseValidator"/> class, with the
            custom validation ligic being implemented in an override of the
            <see lang="abstract"/>
            <see cref="M:YCH.Validation.BaseValidator.Validate(System.Object,YCH.Validation.ValidationErrors)"/>
            template method.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: IValidator.cs,v 1.7 2006/04/09 07:19:01 markpollack Exp $</version>
            <seealso cref="T:YCH.Validation.BaseValidator"/>
        </member>
        <member name="M:YCH.Validation.IValidator.Validate(System.Object,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="errors">
            The <see cref="T:YCH.Validation.ValidationErrors"/> instance to add any error
            messages to in the case of validation failure.
            </param>
            <returns>
            <see lang="true"/> if validation was successful.
            </returns>
        </member>
        <member name="M:YCH.Validation.IValidator.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">
            The <see cref="T:YCH.Validation.ValidationErrors"/> instance to add any error
            messages to in the case of validation failure.
            </param>
            <returns>
            <see lang="true"/> if validation was successful.
            </returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.BaseValidator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.BaseValidator.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.BaseValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidator.#ctor(YCH.Expressions.IExpression,YCH.Expressions.IExpression)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.BaseValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.BaseValidator.Validate(System.Object,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.Validate(System.Object)">
            <summary>
            Validates test object.
            </summary>
            <param name="objectToValidate">Object to validate.</param>
            <returns><c>True</c> if specified object is valid, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.EvaluateTest(System.Object,System.Collections.IDictionary)">
            <summary>
            Evaluates test expression.
            </summary>
            <param name="rootContext">Root context to use for expression evaluation.</param>
            <param name="contextParams">Additional context parameters.</param>
            <returns>Result of the test expression evaluation, or validation context if test is <c>null</c>.</returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.EvaluateWhen(System.Object,System.Collections.IDictionary)">
            <summary>
            Evaluates when expression.
            </summary>
            <param name="rootContext">Root context to use for expression evaluation.</param>
            <param name="contextParams">Additional context parameters.</param>
            <returns><c>True</c> if the condition is true, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.BaseValidator.ProcessActions(System.Boolean,System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Processes the error messages.
            </summary>
            <param name="isValid">Whether validator is valid or not.</param>
            <param name="validationContext">Validation context.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors">Validation errors container.</param>
        </member>
        <member name="P:YCH.Validation.BaseValidator.Test">
            <summary>
            Gets or sets the test expression.
            </summary>
            <value>The test expression.</value>
        </member>
        <member name="P:YCH.Validation.BaseValidator.When">
            <summary>
            Gets or sets the expression that determines if this validator should be evaluated.
            </summary>
            <value>The expression that determines if this validator should be evaluated.</value>
        </member>
        <member name="P:YCH.Validation.BaseValidator.Actions">
            <summary>
            Gets or sets the validation actions.
            </summary>
            <value>The actions that should be executed after validation.</value>
        </member>
        <member name="M:YCH.Validation.ConditionValidator.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.ConditionValidator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.ConditionValidator.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.ConditionValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ConditionValidator.#ctor(YCH.Expressions.IExpression,YCH.Expressions.IExpression)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.ConditionValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ConditionValidator.Validate(System.Object)">
            <summary>
            Evaluates the test using condition evaluator.
            </summary>
            <remarks>
            <p>
            Test can be any logical expression that is supported by the YCH.NET logical
            expression evaluation engine, and can use any variables that can be resolved 
            by the variable resolver used by the validation engine.
            </p>
            </remarks>
            <param name="objectToValidate">The object to validate.</param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="objectToValidate"/> is valid.
            </returns>
        </member>
        <member name="T:YCH.Validation.RegularExpressionValidator">
            <summary>
            Validates that object matches specified regular expression.
            </summary>
            <remarks>
            <p>
            The test expression must evaluate to a <see cref="T:System.String"/>;
            otherwise, an exception is thrown.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: RegularExpressionValidator.cs,v 1.2 2006/04/09 07:19:04 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.RegularExpressionValidator.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RegularExpressionValidator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.RegularExpressionValidator.#ctor(System.String,System.String,System.String)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RegularExpressionValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
            <param name="expression">The regular expression to match against.</param>
        </member>
        <member name="M:YCH.Validation.RegularExpressionValidator.#ctor(YCH.Expressions.IExpression,YCH.Expressions.IExpression,System.String)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RegularExpressionValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
            <param name="expression">The regular expression to match against.</param>
        </member>
        <member name="M:YCH.Validation.RegularExpressionValidator.Validate(System.Object)">
            <summary>
            Validates an object.
            </summary>
            <param name="objectToValidate">Object to validate.</param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="objectToValidate"/>
            object is valid.
            </returns>
            <exception cref="T:System.ArgumentException">
            If the supplied <paramref name="objectToValidate"/> is not a
            <see cref="T:System.String"/>
            </exception>
        </member>
        <member name="P:YCH.Validation.RegularExpressionValidator.Expression">
            <summary>
            The regular expression <b>text</b> to match against.
            </summary>
            <value>The regular expression <b>text</b>.</value>
        </member>
        <member name="P:YCH.Validation.RegularExpressionValidator.Options">
            <summary>
            The <see cref="T:System.Text.RegularExpressions.RegexOptions"/> for the regular expression evaluation.
            </summary>
            <value>The regular expression evaluation options.</value>
            <seealso cref="T:System.Text.RegularExpressions.RegexOptions"/> 
        </member>
        <member name="T:YCH.Validation.RequiredValidator">
            <summary>
            Validates that required value is not empty.
            </summary>
            <remarks>
            <p>
            This validator uses following rules to determine if target value is valid:
            <table>
                <tr>
                    <th>Target <see cref="T:System.Type"/></th>
                    <th>Valid Value</th>
                </tr>
                <tr>
                    <td>A <see cref="T:System.String"/>.</td>
                    <td>Not <see lang="null"/> or an empty string.</td>
                </tr>
                <tr>
                    <td>A <see cref="T:System.DateTime"/>.</td>
                    <td>Not <see cref="F:System.DateTime.MinValue"/> and not <see cref="F:System.DateTime.MaxValue"/>.</td>
                </tr>
                <tr>
                    <td>One of the number types.</td>
                    <td>Not zero.</td>
                </tr>
                <tr>
                    <td>A <see cref="T:System.Char"/>.</td>
                    <td>Not <see cref="F:System.Char.MinValue"/> or whitespace.</td>
                </tr>
                <tr>
                    <td>Any reference type other than <see cref="T:System.String"/>.</td>
                    <td>Not <see lang="null"/>.</td>
                </tr>
            </table>
            </p>
            <p>
            You cannot use this validator to validate any value types other than the ones
            specified in the table above. 
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: RequiredValidator.cs,v 1.7 2006/04/09 07:19:04 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.RequiredValidator.#ctor">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RequiredValidator"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.RequiredValidator.#ctor(System.String,System.String)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RequiredValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.RequiredValidator.#ctor(YCH.Expressions.IExpression,YCH.Expressions.IExpression)">
            <summary>
            Creates a new instance of the <see cref="T:YCH.Validation.RequiredValidator"/> class.
            </summary>
            <param name="test">The expression to validate.</param>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.RequiredValidator.Validate(System.Object)">
            <summary>
            Validates the supplied <paramref name="objectToValidate"/>.
            </summary>
            <remarks>
            In the case of the <see cref="T:YCH.Validation.RequiredValidator"/> class,
            the test should be a variable expression that will be evaluated and the object
            obtained as a result of this evaluation will be tested using the rules described
            in the class overvoew of the <see cref="T:YCH.Validation.RequiredValidator"/>
            class.
            </remarks>
            <param name="objectToValidate">The object to validate.</param>
            <returns>
            <see lang="true"/> if the supplied <paramref name="objectToValidate"/> is valid.
            </returns>
        </member>
        <member name="T:YCH.Validation.AnyValidatorGroup">
            <summary>
            <see cref="T:YCH.Validation.IValidator"/> implementation that supports grouping of validators.
            </summary>
            <remarks>
            <p>
            This validator will be valid when <b>one or more</b> of the validators in the <c>Validators</c>
            collection are valid.
            </p>
            <p>
            <c>ValidationErrors</c> property will return a union of all validation error messages 
            for the contained validators, but only if this validator is not valid (meaning, when none
            of the contained validators are valid).
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: AnyValidatorGroup.cs,v 1.8 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="T:YCH.Validation.ValidatorGroup">
            <summary>
            <see cref="T:YCH.Validation.IValidator"/> implementation that supports grouping of validators.
            </summary>
            <remarks>
            <p>
            This validator will be valid only when all of the validators in the <c>Validators</c>
            collection are valid.
            </p>
            <p>
            <c>ValidationErrors</c> property will return a union of all validation error messages 
            for the contained validators.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ValidatorGroup.cs,v 1.9 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ValidatorGroup.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ValidatorGroup"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.ValidatorGroup.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ValidatorGroup.#ctor(YCH.Expressions.IExpression)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ValidatorGroup.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.ValidatorGroup.Validate(System.Object)">
            <summary>
            Doesn't do anything for validator group as there is no single test.
            </summary>
            <param name="objectToValidate">Object to validate.</param>
            <returns><c>True</c> if specified object is valid, <c>False</c> otherwise.</returns>
        </member>
        <member name="P:YCH.Validation.ValidatorGroup.Validators">
            <summary>
            Gets or sets the validators.
            </summary>
            <value>The validators.</value>
        </member>
        <member name="M:YCH.Validation.AnyValidatorGroup.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.AnyValidatorGroup"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.AnyValidatorGroup.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.AnyValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.AnyValidatorGroup.#ctor(YCH.Expressions.IExpression)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.AnyValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.AnyValidatorGroup.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="T:YCH.Validation.ErrorMessage">
            <summary>
            Represents a single validation error message.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ErrorMessage.cs,v 1.4 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ErrorMessage.#ctor(System.String,System.Object[])">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ErrorMessage"/> class.
            </summary>
            <param name="id">Error message resource identifier.</param>
            <param name="parameters">Parameters that should be used for message resolution.</param>
        </member>
        <member name="M:YCH.Validation.ErrorMessage.GetMessage(YCH.Context.IMessageSource)">
            <summary>
            Resolves the message against specified <see cref="T:YCH.Context.IMessageSource"/>.
            </summary>
            <param name="messageSource">Message source to resolve this error message against.</param>
            <returns>Resolved error message.</returns>
        </member>
        <member name="P:YCH.Validation.ErrorMessage.Id">
            <summary>
            Gets the resource identifier for this message.
            </summary>
            <value>The resource identifier for this message.</value>
        </member>
        <member name="P:YCH.Validation.ErrorMessage.Parameters">
            <summary>
            Gets the message parameters.
            </summary>
            <value>The message parameters.</value>
        </member>
        <member name="T:YCH.Validation.ExclusiveValidatorGroup">
            <summary>
            <see cref="T:YCH.Validation.IValidator"/> implementation that supports grouping of validators.
            </summary>
            <remarks>
            <p>
            This validator will be valid when <b>one or more</b> of the validators in the <c>Validators</c>
            collection are valid.
            </p>
            <p>
            <c>ValidationErrors</c> property will return a union of all validation error messages 
            for the contained validators, but only if this validator is not valid (meaning, when none
            of the contained validators are valid).
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ExclusiveValidatorGroup.cs,v 1.6 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ExclusiveValidatorGroup.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ExclusiveValidatorGroup"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.ExclusiveValidatorGroup.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ExclusiveValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ExclusiveValidatorGroup.#ctor(YCH.Expressions.IExpression)">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ExclusiveValidatorGroup"/> class.
            </summary>
            <param name="when">The expression that determines if this validator should be evaluated.</param>
        </member>
        <member name="M:YCH.Validation.ExclusiveValidatorGroup.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="T:YCH.Validation.Validation">
            <summary>
            Validation 的摘要说明。
            </summary>
        </member>
        <member name="T:YCH.Validation.ValidationConfigParser">
            <summary>
            Implementation of the custom configuration parser for validator definitions.
            </summary>
            <author>Aleksandar Seovic</author>
            <version>$Id: ValidationConfigParser.cs,v 1.10 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ValidationConfigParser"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseRootElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses the root element of the definition.
            </summary>
            <remarks>
            <p>
            If the parser is namespace aware it is assumed that the entire
            contents of the root element will be parsed including child elements.
            Otherwise the method will return after parsing the attributes
            such as default-lazy-init etc.
            </p>
            </remarks>
            <param name="root">The element to be parsed.</param>
            <param name="reader">The resource reader.</param>
            <returns>
            Returns the number of object definitons. Parsers that are not
            namespace aware are likely to return <c>0</c>.
            </returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseElement(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses an element under the root node, typically
            an object definition or import statement.
            </summary>
            <remarks>
            <p>
            This method is never invoked if the parser is namespace aware
            and was called to process the root node.
            </p>
            </remarks>
            <param name="element">The element to be parsed.</param>
            <param name="reader">The resource reader.</param>
            <returns>Number of created object definitions.</returns>
            <exception cref="T:YCH.Objects.Factory.ObjectDefinitionException">
            If top-level validator element doesn't have an <code>id</code> attribute.
            </exception>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseValidator(System.String,System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses the validator definition.
            </summary>
            <param name="id">Validator's identifier.</param>
            <param name="element">The element to parse.</param>
            <param name="reader">The resource reader.</param>
            <returns>Validator object definition.</returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseAndRegisterValidator(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Parses and potentially registers a validator.
            </summary>
            <remarks>
            Only validators that have <code>id</code> attribute specified are registered 
            as separate object definitions within application context.
            </remarks>
            <param name="element">Validator XML element.</param>
            <param name="reader">The resource reader.</param>
            <returns>Validator object definition.</returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.GetTypeName(System.Xml.XmlElement)">
            <summary>
            Gets the name of the object type for the specified element.
            </summary>
            <param name="element">The element.</param>
            <returns>The name of the object type.</returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseErrorMessageAction(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Creates an error message action based on the specified message element.
            </summary>
            <param name="message">The message element.</param>
            <param name="reader">The resource reader.</param>
            <returns>The error message action definition.</returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseGenericAction(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Creates a generic action based on the specified element.
            </summary>
            <param name="element">The action definition element.</param>
            <param name="reader">The resource reader.</param>
            <returns>Generic validation action definition.</returns>
        </member>
        <member name="M:YCH.Validation.ValidationConfigParser.ParseValidatorReference(System.Xml.XmlElement,YCH.Objects.Factory.Xml.XmlResourceReader)">
            <summary>
            Creates object definition for the validator reference.
            </summary>
            <param name="element">The action definition element.</param>
            <param name="reader">The resource reader.</param>
            <returns>Generic validation action definition.</returns>
        </member>
        <member name="T:YCH.Validation.ValidationErrors">
            <summary>
            A container for validation errors.
            </summary>
            <remarks>
            <p>
            This class groups validation errors by validator names and allows
            access to both the complete errors collection and to the errors for a
            certain validator.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ValidationErrors.cs,v 1.6 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ValidationErrors.AddError(System.String,YCH.Validation.ErrorMessage)">
            <summary>
            Adds the supplied <paramref name="message"/> to this
            instance's collection of errors.
            </summary>
            <param name="key">
            The key that should be used for message grouping; can't be
            <see lang="null"/>.
            </param>
            <param name="message">The error message to add.</param>
            <exception cref="T:System.ArgumentNullException">
            If the supplied <paramref name="key"/> or <paramref name="message"/> is <see langword="null"/>.
            </exception>
        </member>
        <member name="M:YCH.Validation.ValidationErrors.MergeErrors(YCH.Validation.ValidationErrors)">
            <summary>
            Merges another instance of <see cref="T:YCH.Validation.ValidationErrors"/> into this one.
            </summary>
            <remarks>
            <p>
            If the supplied <paramref name="errorsToMerge"/> is <see lang="null"/>,
            then no errors will be added to this instance, and this method will
            (silently) return.
            </p>
            </remarks>
            <param name="errorsToMerge">
            The validation errors to merge; can be <see lang="null"/>.
            </param>
        </member>
        <member name="M:YCH.Validation.ValidationErrors.GetErrors(System.String)">
            <summary>
            Gets the list of errors for the supplied lookup <paramref name="key"/>.
            </summary>
            <remarks>
            <p>
            If there are no errors for the supplied lookup <paramref name="key"/>,
            an <b>empty</b> <see cref="T:System.Collections.IList"/> will be returned.
            </p>
            </remarks>
            <param name="key">Error key that was used to group messages.</param>
            <returns>
            A list of all <see cref="T:YCH.Validation.ErrorMessage"/>s for the supplied lookup <paramref name="key"/>.
            </returns>
        </member>
        <member name="M:YCH.Validation.ValidationErrors.GetResolvedErrors(System.String,YCH.Context.IMessageSource)">
            <summary>
            Gets the list of resolved error messages for the supplied lookup <paramref name="key"/>.
            </summary>
            <remarks>
            <p>
            If there are no errors for the supplied lookup <paramref name="key"/>,
            an <b>empty</b> <see cref="T:System.Collections.IList"/> will be returned.
            </p>
            </remarks>
            <param name="key">Error key that was used to group messages.</param>
            <param name="messageSource"><see cref="T:YCH.Context.IMessageSource"/> to resolve messages against.</param>
            <returns>
            A list of resolved error messages for the supplied lookup <paramref name="key"/>.
            </returns>
        </member>
        <member name="P:YCH.Validation.ValidationErrors.IsEmpty">
            <summary>
            Does this instance contain any validation errors?
            </summary>
            <remarks>
            <p>
            If this returns <see lang="true"/>, this means that it (obviously)
            contains no validation errors.
            </p>
            </remarks>
            <value><see lang="true"/> if this instance is empty.</value>
        </member>
        <member name="T:YCH.Validation.ValidatorReference">
            <summary>
            Represents a reference to an externally defined validator object
            </summary>
            <remarks>
            <p>
            This class allows validation groups to reference validators that
            are defined outside of the group itself.
            </p>
            <p>
            It also allows users to narrow the context for the referenced validator
            by specifying value for the <c>Context</c> property.
            </p>
            </remarks>
            <author>Aleksandar Seovic</author>
            <version>$Id: ValidatorReference.cs,v 1.4 2006/04/09 07:19:01 markpollack Exp $</version>
        </member>
        <member name="M:YCH.Validation.ValidatorReference.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:YCH.Validation.ValidatorReference"/> class.
            </summary>
        </member>
        <member name="M:YCH.Validation.ValidatorReference.Validate(System.Object,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="M:YCH.Validation.ValidatorReference.Validate(System.Object,System.Collections.IDictionary,YCH.Validation.ValidationErrors)">
            <summary>
            Validates the specified object.
            </summary>
            <param name="validationContext">The object to validate.</param>
            <param name="contextParams">Additional context parameters.</param>
            <param name="errors"><see cref="T:YCH.Validation.ValidationErrors"/> instance to add error messages to.</param>
            <returns><c>True</c> if validation was successful, <c>False</c> otherwise.</returns>
        </member>
        <member name="P:YCH.Validation.ValidatorReference.Name">
            <summary>
            Gets or sets the name of the referenced validator.
            </summary>
            <value>The name of the referenced validator.</value>
        </member>
        <member name="P:YCH.Validation.ValidatorReference.Context">
            <summary>
            Gets or sets the expression that should be used to narrow validation context.
            </summary>
            <value>The expression that should be used to narrow validation context.</value>
        </member>
        <member name="P:YCH.Validation.ValidatorReference.ObjectFactory">
            <summary>
            Callback that supplies the owning factory to an object instance.
            </summary>
            <value>
            Owning <see cref="T:YCH.Objects.Factory.IObjectFactory"/>
            (may not be <see langword="null"/>). The object can immediately
            call methods on the factory.
            </value>
            <remarks>
            <p>
            Invoked after population of normal object properties but before an init
            callback like <see cref="T:YCH.Objects.Factory.IInitializingObject"/>'s
            <see cref="M:YCH.Objects.Factory.IInitializingObject.AfterPropertiesSet"/>
            method or a custom init-method.
            </p>
            </remarks>
            <exception cref="T:YCH.Objects.ObjectsException">
            In case of initialization errors.
            </exception>
        </member>
    </members>
</doc>
