From ff9a428b3e2b76ac83bf8e1f9b3be607e91f2f7e Mon Sep 17 00:00:00 2001 From: ArtemGovorov_cp Date: Sun, 24 Oct 2010 08:58:00 +0000 Subject: [PATCH] Added Moq and Unity 3 git-tfs-id: [https://tfs.codeplex.com:443/tfs/TFS06]$/autoregistration;C51166 --- Lib/Moq/..svnbridge/Moq.dll | 1 + Lib/Moq/Moq.dll | Bin 0 -> 272384 bytes .../Microsoft.Practices.ServiceLocation.dll | 1 + ...icrosoft.Practices.Unity.Configuration.dll | 1 + ...tices.Unity.Interception.Configuration.dll | 1 + ...Microsoft.Practices.Unity.Interception.dll | 1 + .../..svnbridge/Microsoft.Practices.Unity.dll | 1 + .../Microsoft.Practices.ServiceLocation.dll | Bin 0 -> 29760 bytes ...icrosoft.Practices.Unity.Configuration.dll | Bin 0 -> 86840 bytes ...icrosoft.Practices.Unity.Configuration.xml | 2451 +++++++ ...tices.Unity.Interception.Configuration.dll | Bin 0 -> 47928 bytes ...tices.Unity.Interception.Configuration.xml | 716 ++ ...Microsoft.Practices.Unity.Interception.dll | Bin 0 -> 125752 bytes ...Microsoft.Practices.Unity.Interception.xml | 3460 ++++++++++ Lib/Unity/Microsoft.Practices.Unity.dll | Bin 0 -> 133944 bytes Lib/Unity/Microsoft.Practices.Unity.xml | 5910 +++++++++++++++++ 16 files changed, 12543 insertions(+) create mode 100644 Lib/Moq/..svnbridge/Moq.dll create mode 100644 Lib/Moq/Moq.dll create mode 100644 Lib/Unity/..svnbridge/Microsoft.Practices.ServiceLocation.dll create mode 100644 Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Configuration.dll create mode 100644 Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.Configuration.dll create mode 100644 Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.dll create mode 100644 Lib/Unity/..svnbridge/Microsoft.Practices.Unity.dll create mode 100644 Lib/Unity/Microsoft.Practices.ServiceLocation.dll create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Configuration.dll create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Configuration.xml create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.dll create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.xml create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Interception.dll create mode 100644 Lib/Unity/Microsoft.Practices.Unity.Interception.xml create mode 100644 Lib/Unity/Microsoft.Practices.Unity.dll create mode 100644 Lib/Unity/Microsoft.Practices.Unity.xml diff --git a/Lib/Moq/..svnbridge/Moq.dll b/Lib/Moq/..svnbridge/Moq.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Moq/..svnbridge/Moq.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Moq/Moq.dll b/Lib/Moq/Moq.dll new file mode 100644 index 0000000000000000000000000000000000000000..7cab16290f6b5c813db9569480a906b85c70df12 GIT binary patch literal 272384 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 literal 0 HcmV?d00001 diff --git a/Lib/Unity/..svnbridge/Microsoft.Practices.ServiceLocation.dll b/Lib/Unity/..svnbridge/Microsoft.Practices.ServiceLocation.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Unity/..svnbridge/Microsoft.Practices.ServiceLocation.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Configuration.dll b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Configuration.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Configuration.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.Configuration.dll b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.Configuration.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.Configuration.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.dll b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.Interception.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.dll b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.dll new file mode 100644 index 0000000..0814930 --- /dev/null +++ b/Lib/Unity/..svnbridge/Microsoft.Practices.Unity.dll @@ -0,0 +1 @@ +svn:mime-typeapplication/octet-stream \ No newline at end of file diff --git a/Lib/Unity/Microsoft.Practices.ServiceLocation.dll b/Lib/Unity/Microsoft.Practices.ServiceLocation.dll new file mode 100644 index 0000000000000000000000000000000000000000..3f8895473ed89243927eb4d1148690ca37a500c3 GIT binary patch literal 29760 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 literal 0 HcmV?d00001 diff --git a/Lib/Unity/Microsoft.Practices.Unity.Configuration.dll b/Lib/Unity/Microsoft.Practices.Unity.Configuration.dll new file mode 100644 index 0000000000000000000000000000000000000000..619a5721fbf38fb75e5c4c8e48cd3684733c5569 GIT binary patch literal 86840 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 OZ + + + Microsoft.Practices.Unity.Configuration + + + + + A configuration element storing information about a single type alias. + + + + + Base class for configuration elements with a default implementation of + public deserialization. + + + + + Load this element from the given . + + Contains the XML to initialize from. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Construct a new, uninitialized . + + + + + Construct a new that is initialized + to alias to the target . + + Alias to use. + Type that is aliased. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + The alias used for this type. + + + + + The fully qualified name this alias refers to. + + + + + A collection of s. + + + + + Specialization of + that provides a canned implmentation of . + + Type of configuration element in the collection. + + + + A base helper class for implementing configuration collections. + + Type of configuration element contained in + the collection. + + + + Plug point to get objects out of the collection. + + Index in the collection to retrieve the item from. + Item at that index or null if not present. + + + + Plug point to get objects out of the collection. + + Key to look up the object by. + Item with that key or null if not present. + + + + Load this element from the given . + + Contains the XML to initialize from. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Add a new element to the collection. + + Element to add. + + + + Remove an element from the collection at the given index. + + The index of the item to remove. + + + + Remove all the items in the collection. + + + + + Write out the contents of this collection to the given + without a containing element + corresponding directly to this container element. Each + child element will have a tag name given by + . + + to output XML to. + Name of tag to generate. + + + + Indexer to retrieve items in the collection by index. + + Index of the item to get or set. + The item at the given index. + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Indexer that allows you to get or set an alias by the alias name. + + Alias of element to get or set. + The type name at that alias. + + + + A configuration element used to configure injection of + a specific set of values into an array. + + + + + Base class for configuration elements that describe a value that will + be injected. + + + + + Initialize a new instance of . + + + + + Generate an object + that will be used to configure the container for a type registration. + + Container that is being configured. Supplied in order + to let custom implementations retrieve services; do not configure the container + directly in this method. + Type of the + + + + + Validate that an expected attribute is present in the given + dictionary and that it has a non-empty value. + + Dictionary of name/value pairs to check. + attribute name to check. + + + + Return a unique string that can be used to identify this object. Used + by the configuration collection support. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Generate an object + that will be used to configure the container for a type registration. + + Container that is being configured. Supplied in order + to let custom implementations retrieve services; do not configure the container + directly in this method. + Type of the + + + + + Type of array to inject. This is actually the type of the array elements, + not the array type. Optional, if not specified we take the type from + our containing element. + + + + + Values used to calculate the contents of the array. + + + + + A configuration element representing the namespace + tags in the config file. + + + + + An element with a single "name" property, used for + the namespaces and assemblies. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Name attribute for this element. + + + + + A collection of s in configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Helpful extension methods when implementing configuration sections + that deserialize "unwrapped" elements - elements that should be + deserialized into a container but can be present outside + that container in the actual config file. + + + + + Deserialize an element of the given type, store it in + the collection object, and + + Type of element to create and deserialize. + Parent element containing element to deserialize. + Xml reader containing state to deserialize from. + Collection to store the created element into. + The created element. + + + + Deserialize an element, basing the element type on the one + supplied at runtime, and then store the element into the + given . + + This method is useful when reading elements into a polymorphic collection. + Base type of element to store. + Element that contains the collection being stored into. + Xml Reader containing state to deserialize from. + Runtime type of element to create. + Collection to store the created element into. + The created element. + + + + Class that tracks the current input state of the parser. + + + + + A simple implementing of the rules for a Parsing Expression Grammar + parsing algorithm. This supplies basic methods to do the primitives + of the PEG, and combinators to create larger rules. + + + + + The PEG "dot" operator that matches and consumes one character. + + Input to the parser. + The parse result. + + + + Parse function generator that returns a method to match a single, + specific character. + + Character to match. + The generated parsing function. + + + + Parse function generator that checks if the current character matches + the predicate supplied. + + Predicate used to determine if the character is in + the given range. + The generated parsing function. + + + + The "*" operator - match zero or more of the inner parse expressions. + + Parse method to repeat matching. + The generated parsing function. + + + + Parsing combinator that matches all of the given expressions in + order, or matches none of them. + + Expressions that form the sequence to match. + The combined sequence. + + + + Parsing combinator that implements the PEG prioritized choice operator. Basically, + try each of the expressions in order, and match if any of them match, stopping on the + first match. + + Expressions that form the set of alternatives. + The combined parsing method. + + + + Parsing combinator implementing the "not" predicate. This wraps + the given parsing method with a check + to see if it matched. If it matched, then the Not fails, and vice + versa. The result consumes no input. + + The parse method to wrap. + The generated parsing function. + + + + Parsing expression that matches End of input. + + Parser input. + Parse result + + + + Combinator that executes an action if the given expression matched. + + Parsing expression to match. + Action to execute if + matched. Input is the matched text from . + The result of . + + + + Combinator that executes an action if the given expression matched. + + parsing expression to match. + Method to execute if a match happens. This method returns + the that will be returned from the combined expression. + The result of if expression matched, else + whatever returned. + + + + Object containing the result of attempting to match a PEG rule. + This object is the return type for all parsing methods. + + + + + Did the rule match? + + + + + The characters that were matched (if any) + + + + + Any extra information provided by the parsing expression + (only set if the parse matched). The nature + of the data varies depending on the parsing expression. + + + + + Helper methods to make it easier to pull the data + out of the result of a sequence expression. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + + Removes all items from the . + + The is read-only. + + + + + Determines whether the contains a specific value. + + + true if is found in the ; otherwise, false. + + The object to locate in the . + + + + + Copies the elements of the sequence to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from this sequence. The must have zero-based indexing. + The zero-based index in at which copying begins. + is null. + is less than 0. + is multidimensional. + -or- + is equal to or greater than the length of . + -or- + The number of elements in the source is greater than the available space from to the end of the destination . + + + + + Removes the first occurrence of a specific object from the . + + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The object to remove from the . + The is read-only. + + + + + Determines the index of a specific item in the . + + + The index of if found in the list; otherwise, -1. + + The object to locate in the . + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + is not a valid index in the . + The is read-only. + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + is not a valid index in the . + The is read-only. + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + + Gets a value indicating whether the is read-only. + + + true if the is read-only; otherwise, false. + + + + + Gets or sets the element at the specified index. + + + The element at the specified index. + + The zero-based index of the element to get or set. + is not a valid index in the . + The property is set and the is read-only. + + + + + Class containing information about a type name. + + + + + The base name of the class + + + + + Namespace if any + + + + + Assembly name, if any + + + + + Helper methods on . + + + + + A helper method to make it more foolproof to write elements. This takes care of writing the + start and end elment tags, and takes a nested closure with the code to write the content of + the tag. That way the caller doesn't need to worry about the details of getting the start + and end tags correct. + + + We don't support XML Namespaces here because .NET configuration doesn't use them so + we don't need it for this current implementation. + + XmlWriter to write to. + Name of element. + Nested lambda which, when executed, will create the content for the + element. + (for method chaining if desired). + + + + A helper method to make it easier to output attributes. If the is + null or an empty string, output nothing, else output the given XML attribute. + + Writer to output to. + Attribute name to write. + Value for the attribute. + (for method chaining if desired). + + + + A base class for those elements that can be used + to configure a unity container. + + + + + Create a new instance of . + + + + + Apply this element's configuration to the given . + + Container to configure. + + + + Return a unique key that can be used to manage this element in a collection. + + + + + A couple of useful extension methods on IDictionary + + + + + Get the value from a dictionary, or null if there is no value. + + Key type of dictionary. + Value type of dictionary. + Dictionary to search. + Key to look up. + The value at the key or null if not in the dictionary. + + + + A helper class used to map element tag names to a handler method + used to interpret that element. + + + + + + Add method to enable dictionary initializer syntax + + + + + + + Process an unknown element according to the map entries. + + Parent element that hit this unknown element. + Name of the unknown element. + XmlReader positioned at start of element. + true if processed, false if not. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + A helper class used to map element tag names to a handler method + used to interpret that element. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + A helper class that assists in deserializing parameter and property + elements. These elements both have a single "value" child element that + specify the value to inject for the property or parameter. + + + + + Create a new that wraps reading + values and storing them in the given . + + Element that contains the value elements. + + + + Gets a , or if none is present, + returns a default . + + The . + The given , unless + is null, in which case returns + a . + + + + Helper method used during deserialization to handle + attributes for the dependency and value tags. + + attribute name. + attribute value. + true + + + + Helper method used during deserialization to handle the default + value element tags. + + The element name. + XML data to read. + True if deserialization succeeded, false if it failed. + + + + Call this method at the end of deserialization of your element to + set your value element. + + + + + Serialize a object out to XML. + This method is aware of and implements the shorthand attributes + for dependency and value elements. + + Writer to output XML to. + The to serialize. + If true, always output an element. If false, then + dependency and value elements will be serialized as attributes in the parent tag. + + + + Configuration element representing a constructor configuration. + + + + + Base class for configuration elements that generate + object to configure a container. + + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Get the standard tag name for an + taking into account currently loaded section extensions. + + Element to get the name for. + The element name. + If the member element is not currently registered + with the section. + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + Element name to use to serialize this into XML. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + The parameters of the constructor to call. + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + Element name to use to serialize this into XML. + + + + + A collection of s as + loaded from configuration. + + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + A configuration element class defining the set of registrations to be + put into a container. + + + + + Original configuration API kept for backwards compatibility. + + Container to configure + + + + Apply the configuration information in this element to the + given . + + Container to configure. + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Name for this container configuration as given in the config file. + + + + + The type registrations in this container. + + + + + Any instances to register in the container. + + + + + Any extensions to add to the container. + + + + + Set of any extra configuration elements that were added by a + section extension. + + + This is not marked as a configuration property because we don't want + the actual property to show up as a nested element in the configuration. + + + + Configuration element representing an extension to add to a container. + + + + + Add the extension specified in this element to the container. + + Container to configure. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Type of the extension to add. + + + + + A collection of s. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + A derived class that describes + a parameter that should be resolved through the container. + + + + + Create a new instance of . + + + + + Create a new instance of with + properties initialized from the contents of + . + + Dictionary of name/value pairs to + initialize this object with. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Write the contents of this element to the given . This + method always outputs an explicit <dependency> tag, instead of providing + attributes to the parent method. + + Writer to send XML content to. + + + + Generate an object + that will be used to configure the container for a type registration. + + Container that is being configured. Supplied in order + to let custom implementations retrieve services; do not configure the container + directly in this method. + Type of the + + + + + Name to use to when resolving. If empty, resolves the default. + + + + + Name of type this dependency should resolve to. This is optional; + without it the container will resolve the type of whatever + property or parameter this element is contained in. + + + + + Base class used to derive new elements that can occur + directly within a container element. + + + + + Initialize a new instance of . + + + + + When overridden in a derived class, this method will make configuration + calls into the given according to its contents. + + The container to configure. + + + + Unique key generated for use in the collection class. + + + + + A collection of s. + + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + This class manages the set of extension elements + added by section elements. + + + + + Clear the current set of extension elements. + + + + + Register a new ContainerExtensionConfigurationElement with he section so it + can be read. + + prefix if any. + tag name. + Type of element to register. + + + + Register a new with the section + so it can be read. + + prefix if any. + Tag name. + Type of element to register. + + + + Register a new with the section + so it can be read. + + prefix if any. + Tag name. + Type of element to register. + + + + Retrieve the registered for the given + tag. + + Tag to look up. + Type of element, or null if not registered. + + + + Retrieve the ContainerExtensionConfigurationElement registered for the given + tag. + + Tag to look up. + Type of element, or null if not registered. + + + + Retrieve the ContainerExtensionConfigurationElement registered for the given + tag. + + Tag to look up. + Type of element, or null if not registered. + + + + Retrieve the correct tag to use when serializing the given + to XML. + + Element to be serialized. + The tag for that element type. + if the element is of a type that + is not registered with the section already. + + + + A polymorphic collection of s. + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Indexer that lets you access elements by their key. + + Key to retrieve element with. + The element. + + + + A configuration element that describes an instance to add to the container. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Add the instance defined by this element to the given container. + + Container to configure. + + + + Name to register instance under + + + + + Value for this instance + + + + + Type of the instance. If not given, defaults to string + + + + + Type name for the type converter to use to create the instance. If not + given, defaults to the default type converter for this instance type. + + + + + Key used to keep these instances unique in the config collection. + + + + + A collection of s. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + An element that has a child Value property. + + + + + String that will be deserialized to provide the value. + + + + + A string describing where the value this element contains + is being used. For example, if setting a property Prop1, + this should return "property Prop1" (in english). + + + + + A configuration element that represents lifetime managers. + + + + + Create the described by + this element. + + A instance. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Type of the lifetime manager. + + + + + Extra initialization information used by the type converter for this lifetime manager. + + + + + Type of to use to create the + lifetime manager. + + + + + A configuration element representing a method to call. + + + + + Construct a new instance of . + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Name of the method to call. + + + + + Parameters to the method call. + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + Element name to use to serialize this into XML. + + + + + A configuration element representing the namespace + tags in the config file. + + + + + A collection of s in configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + A configuration element that specifies that a value + is optional. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Generate an object + that will be used to configure the container for a type registration. + + Container that is being configured. Supplied in order + to let custom implementations retrieve services; do not configure the container + directly in this method. + Type of the + + + + + Name used to resolve the dependency, leave out or blank to resolve default. + + + + + Type of dependency to resolve. If left out, resolved the type of + the containing parameter or property. + + + + + Configuration element representing a parameter passed to a constructor + or a method. + + + + + Construct a new instance of . + + + + + Returns the required needed + to configure the container so that the correct value is injected. + + Container being configured. + Type of the parameter. + The value to use to configure the container. + + + + Does the information in this match + up with the given ? + + Information about the parameter. + True if this is a match, false if not. + + + + Reads XML from the configuration file. + + The that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + The element to read is locked. + - or - + An attribute of the current node is not recognized. + - or - + The lock status of the current node cannot be determined. + + + + + Gets a value indicating whether an unknown attribute is encountered during deserialization. + + + true when an unknown attribute is encountered while deserializing; otherwise, false. + + The name of the unrecognized attribute. + The value of the unrecognized attribute. + + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Name of this parameter. + + + + + Type of this parameter. + + This is only needed in order to disambiguate method overloads. Normally + the parameter name is sufficient. + + + + Element that describes the value for this property. + + + This is NOT marked as a ConfigurationProperty because this + child element is polymorphic, and the element tag determines + the type. Standard configuration properties only let you do + this if it's a collection, but we only want one value. Thus + the separate property. The element is deserialized in + . + + + + A string describing where the value this element contains + is being used. For example, if setting a property Prop1, + this should return "property Prop1" (in english). + + + + + A collection of objects. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + A collection of objects. + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + String that will be deserialized to provide the value. + + + + + A string describing where the value this element contains + is being used. For example, if setting a property Prop1, + this should return "property Prop1" (in english). + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to An abstract ContainerConfiguringElement cannot be created. Please specify a concrete type.. + + + + + Looks up a localized string similar to An abstract ExtensionConfigurationElement object cannot be created. Please specify a concrete type.. + + + + + Looks up a localized string similar to An abstract InjectionMemberElement object cannot be created. Please specify a concrete type.. + + + + + Looks up a localized string similar to An abstract ParameterValueElement object cannot be created. Please specify a concrete type.. + + + + + Looks up a localized string similar to The type name or alias {0} could not be resolved. Please check your configuration file and verify this type name.. + + + + + Looks up a localized string similar to The dependency element for generic parameter {0} must not have an explicit type name but has '{1}'.. + + + + + Looks up a localized string similar to The optional dependency element for generic parameter {0} must not have an explicit type name but has '{1}'.. + + + + + Looks up a localized string similar to {0} {1}. + + + + + Looks up a localized string similar to The injection configuration for {0} has multiple values.. + + + + + Looks up a localized string similar to The configuration element type {0} has not been registered with the section.. + + + + + Looks up a localized string similar to The injection configuration for {0} is specified through both attributes and child value elements.. + + + + + Looks up a localized string similar to Could not load section extension type {0}.. + + + + + Looks up a localized string similar to The extension type {0} does not derive from SectionExtension.. + + + + + Looks up a localized string similar to The extension element type {0} that is being added does not derive from ContainerConfiguringElement, InjectionMemberElement, or ParameterValueElement. An extension element must derive from one of these types.. + + + + + Looks up a localized string similar to No valid attributes were found to construct the value for the {0}. Please check the configuration file.. + + + + + Looks up a localized string similar to Configuration is incorrect, the type {0} does not have a constructor that takes parameters named {1}.. + + + + + Looks up a localized string similar to Configuration is incorrect, the type {0} does not have a method named {1} that takes parameters named {2}.. + + + + + Looks up a localized string similar to The container named "{0}" is not defined in this configuration section.. + + + + + Looks up a localized string similar to The type {0} does not have a property named {1}.. + + + + + Looks up a localized string similar to The configuration is set to inject an array, but the type {0} is not an array type.. + + + + + Looks up a localized string similar to parameter. + + + + + Looks up a localized string similar to property. + + + + + Looks up a localized string similar to The attribute {0} must be present and non-empty.. + + + + + Looks up a localized string similar to The value element for {1} was specified for the generic array type {0}. Value elements are not allowed for generic array types.. + + + + + Looks up a localized string similar to The value element for {1} was specified for the generic parameter type {0}. Value elements are not allowed for generic parameter types.. + + + + + Looks up a localized string similar to The value element for {1} was specified for the generic type {0}. Value elements are not allowed for generic types.. + + + + + A class representing a property configuration element. + + + + + Construct a new instance of + + + + + Reads XML from the configuration file. + + The that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + The element to read is locked. + - or - + An attribute of the current node is not recognized. + - or - + The lock status of the current node cannot be determined. + + + + + Gets a value indicating whether an unknown attribute is encountered during deserialization. + + + true when an unknown attribute is encountered while deserializing; otherwise, false. + + The name of the unrecognized attribute. + The value of the unrecognized attribute. + + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Name of the property that will be set. + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + String that will be deserialized to provide the value. + + + + + A string describing where the value this element contains + is being used. For example, if setting a property Prop1, + this should return "property Prop1" (in english). + + + + + Element name to use to serialize this into XML. + + + + + A configuration element representing a single container type registration. + + + + + Apply the registrations from this element to the given container. + + Container to configure. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + The type that is registered. + + + + + Name registered under. + + + + + Type that is mapped to. + + + + + Lifetime manager to register for this registration. + + + + + Any injection members (constructor, properties, etc.) that are specified for + this registration. + + + + + A collection of s. + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Base class for Unity configuration section extensions. + Derived classes are used to add custom elments and aliases + into the configuration section being loaded. + + + + + Add the extensions to the section via the context. + + Context object that can be used to add elements and aliases. + + + + An object that gives the ability to add + elements and aliases to a configuration section. + + + + + Add a new alias to the configuration section. This is useful + for those extensions that add commonly used types to configuration + so users don't have to alias them repeatedly. + + The alias to use. + Type the alias maps to. + + + + Add a new alias to the configuration section. This is useful + for those extensions that add commonly used types to configuration + so users don't have to alias them repeatedly. + + Type the alias maps to. + The alias to use + + + + Add a new element to the configuration section schema. + + Tag name in the XML. + Type the tag maps to. + + + + Add a new element to the configuration section schema. + + Type the tag maps to. + Tag name in the XML. + + + + A configuration element used to specify which extensions to + add to the configuration schema. + + + + + Reads XML from the configuration file. + + The that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + The element to read is locked. + - or - + An attribute of the current node is not recognized. + - or - + The lock status of the current node cannot be determined. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Type of the section extender object that will provide new elements to the schema. + + + + + Optional prefix that will be added to the element names added by this + section extender. If left out, no prefix will be added. + + + + + The extension object represented by this element. + + + + + A collection of s. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Type that manage access to a set of type aliases and implements + the logic for converting aliases to their actual types. + + + + + Set the set of aliases to use for resolution. + + Configuration section containing the various + type aliases, namespaces and assemblies. + + + + Resolves a type alias or type fullname to a concrete type. + + Type alias or type fullname + Type object or null if resolve fails. + Thrown if alias lookup fails. + + + + Resolves a type alias or type fullname to a concrete type. + + Alias or name to resolve. + if true and the alias does not + resolve, throw an , otherwise + return null on failure. + The type object or null if resolve fails and + is false. + + + + Resolve a type alias or type full name to a concrete type. + If is null or empty, return the + given instead. + + Type alias or full name to resolve. + Value to return if typeName is null or empty. + The concrete . + Thrown if alias lookup fails. + + + + Resolve a type alias or type full name to a concrete type. + If is null or empty, return the + given instead. + + Type alias or full name to resolve. + Value to return if typeName is null or empty. + if true and the alias does not + resolve, throw an , otherwise + return null on failure. + The concrete . + Thrown if alias lookup fails and + is true. + + + + A helper class that implements the actual logic for resolving a shorthand + type name (alias or raw type name) into an actual type object. + + + + + Construct a new that uses the given + sequence of alias, typename pairs to resolve types. + + Type aliases from the configuration file. + Assembly names to search. + Namespaces to search. + + + + Resolves a type alias or type fullname to a concrete type. + + Alias or name to resolve. + if true and the alias does not + resolve, throw an , otherwise + return null on failure. + The type object or null if resolve fails and + is false. + + + + Resolve a type alias or type full name to a concrete type. + If is null or empty, return the + given instead. + + Type alias or full name to resolve. + Value to return if typeName is null or empty. + if true and the alias does not + resolve, throw an , otherwise + return null on failure. + + If is null or an empty string, + then return . + Otherwise, return the resolved type object. If the resolution fails + and is false, then return null. + + + + + A configuration section describing configuration for an . + + + + + The name of the section where unity configuration is expected to be found. + + + + + XML Namespace string used for IntelliSense in this section. + + + + + Apply the configuration in the default container element to the given container. + + Container to configure. + The passed in . + + + + Apply the configuration in the default container element to the given container. + + Container to configure. + Name of the container element to use to configure the container. + The passed in . + + + + Reads XML from the configuration file. + + The object, which reads from the configuration file. + found no elements in the configuration file. + + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Creates an XML string containing an unmerged view of the object as a single section to write to a file. + + + An XML string containing an unmerged view of the object. + + The instance to use as the parent when performing the un-merge. + The name of the section to create. + The instance to use when writing to a string. + + + + + The current that is being deserialized + or being configured from. + + + + + Storage for XML namespace. The namespace isn't used or validated by config, but + it is useful for Visual Studio XML IntelliSense to kick in. + + + + + The set of containers defined in this configuration section. + + + + + The set of type aliases defined in this configuration file. + + + + + Any schema extensions that are added. + + + + + Any namespaces added to the type search list. + + + + + Any assemblies added to the type search list. + + + + + Add a new alias to the configuration section. This is useful + for those extensions that add commonly used types to configuration + so users don't have to alias them repeatedly. + + The alias to use. + Type the alias maps to. + + + + Add a new element to the configuration section schema. + + Tag name in the XML. + Type the tag maps to. + + + + Collection element for s. + + + + + Plug point to get objects out of the collection. + + Index in the collection to retrieve the item from. + Item at that index or null if not present. + + + + Plug point to get objects out of the collection. + + Key to look up the object by. + Item with that key or null if not present. + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Retrieve a stored by name. + + Name to look up. + The stored container or null if not in the collection. + + + + Return the default container in the collection. The default is the one without a name. + + + + + Extensions to to simplify + loading configuration into a container. + + + + + Apply configuration from the given section and named container + into the given container. + + Unity container to configure. + Configuration section with config information. + Named container. + . + + + + Apply configuration from the default section (named "unity" pulled out of + ConfigurationManager) and the named container. + + Unity container to configure. + Named container element in configuration. + . + + + + Apply configuration from the default section and unnamed container element. + + Container to configure. + . + + + + Apply configuration from the default container in the given section. + + Unity container to configure. + Configuration section. + . + + + + Element that describes a constant value that will be + injected into the container. + + + + + Construct a new object. + + + + + Construct a new object, + initializing properties from the contents of + . + + Name/value pairs which + contain the values to initialize properties to. + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Write the contents of this element to the given . This + method always outputs an explicit <dependency> tag, instead of providing + attributes to the parent method. + + Writer to send XML content to. + + + + Generate an object + that will be used to configure the container for a type registration. + + Container that is being configured. Supplied in order + to let custom implementations retrieve services; do not configure the container + directly in this method. + Type of the parameter to get the value for. + The required object. + + + + Value for this element + + + + + + + + + diff --git a/Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.dll b/Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.dll new file mode 100644 index 0000000000000000000000000000000000000000..15ec9b8b4f8b4a91fe42217c09ad5b3f27c1c537 GIT binary patch literal 47928 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 PA!%X3Z9n}dZIt{U$PtCv literal 0 HcmV?d00001 diff --git a/Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.xml b/Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.xml new file mode 100644 index 0000000..eda678d --- /dev/null +++ b/Lib/Unity/Microsoft.Practices.Unity.Interception.Configuration.xml @@ -0,0 +1,716 @@ + + + + Microsoft.Practices.Unity.Interception.Configuration + + + + + Configuration element that lets you specify additional interfaces + to add when this type is intercepted. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Type of interface to add. + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + Configuration element representing a call handler. + + + + + Base class for the two children of the Policy element: + MatchingRuleElement and CallHandlerElement. + + + + These configuration elements have a required "name" attribute, an optional "type" attribute, and + optional child elements <lifetime> and <injection> + + + Elements without a value for the type attribute can only have a value for the name attribute, and + indicate that the represented handler or rule is configured elsewhere and that a reference to + the given name must be added to the policy to be resolved, while elements with a value for the type + attribute indicate how the represented handler or rule should be built and can optionally specify + lifetime management and injection configuration. + + + This element is similar to the , except that it does not provide + an extension point for arbitrary configuration. + + + + + + Reads XML from the configuration file. + + The that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + The element to read is locked. + - or - + An attribute of the current node is not recognized. + - or - + The lock status of the current node cannot be determined. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Name of this item + + + + + Type that implements this matching rule or call handler. + + + + + Injection members that control how this item is created. + + + + + Lifetime manager for this item. + + + + + A collection of s for configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + Retrieve a call handler element from the collection by name. + + Name to look up. + The rule, or null if not in the collection. + + + + The <default> element that appears inside an <interceptor> element. + + + + + Base class for the default and key elements that can occur + inside the <interceptor> element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Actually register the interceptor against this type. + + Container to configure. + interceptor to register. + + + + Type name that this interceptor will be registered for. + + + + + Return the type object that is resolved from the property. + + The type object. + + + + Actually register the interceptor against this type. + + Container to configure. + interceptor to register. + + + + Configuration elmement for specifying + interception behaviors for a type. + + + + + Reads XML from the configuration file. + + The that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + The element to read is locked. + - or - + An attribute of the current node is not recognized. + - or - + The lock status of the current node cannot be determined. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Type of behavior to add. + + + + + Name of behavior to resolve. + + + + + Should this behavior be configured as a default behavior for this type, or + specifically for this type/name pair only? + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + Section extension class used to add the elements needed to configure + Unity interception to the configuration schema. + + + + + Add the extensions to the section via the context. + + Context object that can be used to add elements and aliases. + + + + A configuration element that contains the top-level container configuration + information for interception - handler policies and global interceptor definitions. + + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Apply this element's configuration to the given . + + Container to configure. + + + + Policies defined for this container. + + + + + Configuration element that lets you configure + what interceptor to use for a type. + + + + + Initialize a new . + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Type name for the interceptor to apply. + + + + + Name to use when resolving interceptors from the container. + + + + + Should this interceptor be registered as the default for the contained + type, or only for this particular type/name pair? + + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + A collection of objects as shown + in configuration. + + + + + When overridden in a derived class, creates a new . + + + A new . + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Configuration element that provides a top-level element for + configuration interceptors for types in a container. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Apply this element's configuration to the given . + + Container to configure. + + + + The various child elements that are contained in this element. + + + + + Configuration element that represents the configuration for + a specific interceptor, as presented in the config file inside + the <interceptors> element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Type of interceptor to configure. + + + + + The types that this interceptor will be registered against. + + + + + Any value passed to the type converter. + + + + + Type converter to use to create the interceptor, if any. + + + + + A collection of objects + as stored in configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + The <key> element that occurs inside an <interceptor> element + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Actually register the interceptor against this type. + + Container to configure. + interceptor to register. + + + + Name registration should be under. To register under the default, leave blank. + + + + + A configuration element representing a matching rule. + + + + + A collection of s for configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Causes the configuration system to throw an exception. + + + true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. + + The name of the unrecognized element. + An input stream that reads XML from the configuration file. + The element specified in is the <clear> element. + starts with the reserved prefix "config" or "lock". + + + + + Retrieve a matching rule element from the collection by name. + + Name to look up. + The rule, or null if not in the collection. + + + + Configuration element for building up an interception policy. + + + + + Gets a value indicating whether an unknown element is encountered during deserialization. + + + true when an unknown element is encountered while deserializing; otherwise, false. + + The name of the unknown subelement. + The being used for deserialization. + The element identified by is locked. + - or - + One or more of the element's attributes is locked. + - or - + is unrecognized, or the element has an unrecognized attribute. + - or - + The element has a Boolean attribute with an invalid value. + - or - + An attempt was made to deserialize a property more than once. + - or - + An attempt was made to deserialize a property that is not a valid member of the element. + - or - + The element cannot contain a CDATA or text element. + + + + + Write the contents of this element to the given . + + The caller of this method has already written the start element tag before + calling this method, so deriving classes only need to write the element content, not + the start or end tags. + Writer to send XML content to. + + + + Name of this policy. + + + + + Matching rules for this policy. + + + + + Call handlers for this policy. + + + + + A collection of in the configuration. + + + + + Gets the element key for a specified configuration element when overridden in a derived class. + + + An that acts as the key for the specified . + + The to return the key for. + + + + + Indexer to retrieve policy element objects by name. + + Name of policy to get. + The element. + + + + A shortcut element to enable the policy injection behavior. + + + + + Return the set of s that are needed + to configure the container according to this configuration element. + + Container that is being configured. + Type that is being registered. + Type that is being mapped to. + Name this registration is under. + One or more objects that should be + applied to the container registration. + + + + Each element must have a unique key, which is generated by the subclasses. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The abstract type InterceptorRegistrationElement cannot be created. Please create a concrete instance.. + + + + + Looks up a localized string similar to The <injection/> element is not allowed on element named '{0}' because it doesn't have a type attribute.. + + + + + Looks up a localized string similar to The <lifetime/> element is not allowed on element named '{0}' because it doesn't have a type attribute.. + + + + + Looks up a localized string similar to The type name or alias {0} could not be resolved. Please check your configuration file and verify this type name.. + + + + + Looks up a localized string similar to Cannot create instance of type {0} with a default constructor.. + + + + + Looks up a localized string similar to The type name {0} resolved to type {1} is not compatible with the required type {2}.. + + + + + Looks up a localized string similar to The type {0} could not be resolved to a valid type. Please double check your configuration.. + + + + + Looks up a localized string similar to The interception behavior element must have at least one of the 'name' or 'type' attributes.. + + + + diff --git a/Lib/Unity/Microsoft.Practices.Unity.Interception.dll b/Lib/Unity/Microsoft.Practices.Unity.Interception.dll new file mode 100644 index 0000000000000000000000000000000000000000..28b3c0e82e29288fd4e7882cc45542950b6a35f7 GIT binary patch literal 125752 zcmeEvcVJw_)$i=RyLVTsdL?-!S4pmy-Id&%z`bA_V~ULn5O5P9FurD2cEHOD8wk}l zy~G3p1`+}U2)(z^Nk9pmI0iyO5+IO9C?WRy{m$IGyOL$#d*Ao|c<&*5=gv8E=FFKh zGiU0ZyZ@o*D^n>I#BbLwrS8R(f0M=iYG(t2%j)hgQ+F2qvfZ z+sbGt4n&l?I-pd&#?E`#^FN9wr6ayV%MG8%&!m>dZ#D3( z2ENt6w;K3X1K(=kTMc}xfp0bNtp>i;z_%Ls|40MFIIqSZ=ca}Vsn;J;stxM^MS@l8 zhP#y-7FO!OdZjjaxUYJ=Q8E7P>rOiNzQm??0zHqt?w2nowypnd&%1|~EUtLu-q)Vn zaKN-At-WZ8xCB{Ou=2_)F9M!YvDE~oSt|%j|7xevl)vZ zfv6QT-Cn?LvmDI*qY@*HX@7LRVP+9M2)?EQ3$8NQWx-&`sRQe%Wn>uY_5%=~X>>qg zy`8>f4mvA-lrOo2J zGG1?F$R=5A1Vd#(2Zd(EwKqyHAxnQP2Ni|J>!*sB+Vo~m( zmYXQ(NaC9cT0zZIwi%33Ux}!dj964NN}bjao@y^4%e!q`eijUaT6%v0y^p-x%x z=Zp-~NS5p8S|nst?=<5b^hmK98S-<7KsMKbLmirG7<7OlwY}(7`q{=<>3Il>CQ5X~ zbOWKFWjaVFA@z}Qq0O#w>lyd*PH_kOaUnvYiy9?wozz$jY7jXnpQw>WZHi_gVldv% z$jEbyewuDVvLX2x4q347g|d{Y6E&+o!RKUK8yY z%&qGQ#LwA1xV;HU7m&nIrU5W^Z)PLt4O?>n+6S21M(U27*r}I%Z!q4ut^Q?2tA~OhTKbkb}&k!L*~j2OI6`oz^ID zNuv~^8;BA-?LxuKX!M#GE;4Kw170pRWrs?xAK7XB(LVOLttIC_IccF>)JFd)V=(tA6~ zDy^L{@aye11F^j*t^!ySHB>{O-=qLqwNevdLqhrDh#yr@SS&`g1+N&_6^2NRU_of- z5=4q9!;vUMXbEMA()4Dn6^Z$oo8szMQW9{^R6 zM5P^ZC(vuzA={FI0%jsGjepotVn>o;fKp6$$S*=DOc)R*jLl9YVVUky2r2OgkA;`ywtXh@IZgkbXByT1#RyRyYrWmlTs% zmo=xGe5|$8nu}=ZNnq`aMD{gLuIr=dZ7t7zpw0~k3~wYLavushWX?9)Q5ChKQIW0m zWU$*nl;9nZB+%`!X}6dAgs9*;-3>$uUL+{C!tB5j4&ok4O*heJAV#uN^v7~KC=UBWB3*}fkFLi6(1Ai0 z?DYOpE@qbUS-~vDHX37=mLHoamT*YVM4Iaj6v#Xl2ud~TKrxB@P$_3HVYOic3WiGG zu-CR3Nrp{ovr5W> z5sRZ32>|N^dwR;no}SNcdwR-H(9>V)ML|!^DEZz!Ze&O*eS5qsRXy6J^y5C&VCJV& zPmLzao;pA7G})wOsInJSi_sR!*fN3+6m1zHXEp=TFIFN^=@-QVM3s*a4-ha4nnFDJ zP8tIy83@P|WzYJ037*K8ZPHjo*CK|I48+YE2i(y|H3s6A=^{5)F>pvAQ4#^pj5(l8 zlomCH#b6|?A{T>im?o25VpQ~371B(_DpXk!Gb~1_19T2VNL0bvZfT7TuQhFt5(qme zUA8+HT;d|5sZe6;iObn7?L1Woq9Te8ss3qv6Va3hHXr;Nc z2geIVap?jyuM(dZCGVD3#OKAvejp_q!!E5XSnVuesob6$2SJda5zJzM88kv!j4p#l zSul&{jb|u}X-W{8>J7a&!FWN%HpWRLb`JvAq!En!@WFrw8yVrJDdq!XI17=Ui$u{C zCwibSJ_KG2*n)#<7FQU~B7_1d2LE?3_(2%_pf>o1vzSp4KUx(+)Q}5eOdP^q)Fq4> z%0~?$YRHdzIHMvy#{xajv4A*QVnn>C-(gfMAJsxs%ZsXIhZT-ig=6TUMxux#TT6A$ zij0h?C?g8WP(5iX6jKi5%c?N!NX_D^h#g@?8Sx}_7jQVX*jx4gj@~vk)H>Dwa^L?m z)&C{!uNr13v@nG#Ydc3EdG|;-M&=%*F|vn|xf{>Aog<5lSe9NRny8AU7wY~gb1yJi zI&5&x0l;FsXsQRn57i!)fKiIWGfW_0U(}`e9f#kz3*Z<%G{+kKFoc_^p>B-36hdV0 zXM(Zp19&9n8b(Io48g70`xus?>n;OrV?Trw%HG9*TH#p}-7&_ zb{#4NWRFF6gbil_eA}%!$7ZmV>W(`&{ZI<#f}G>M(#w(Dde{U*)dAllm(QqGvt$OQ zcW+Fr1OZn&W@9DMj~&}ChBWp z-k?n65Za8oX*iy^ZSZPw*TVN-5qFN6T9O-j%OXv@-OSIZf~oKLpC3~`^1u#-#+Qp?ej=fJFZha4NR5}{EyQAi1t5D|6}yC-7aP&r5@&?=IZ)P zR#7Y0ZqI}OMF<>6Ym90tDP_n^@-hArgc}($)bRHNX1IriF^VQrXrdD5L_pb}Gc=Zc z0*}Nrgb17=h#Fo1q|bvUvM?z@G-W1S6Za(;B;;t*jAaO*qoPg!blj;FLZ|PgdlJ)q zlC-hxQ+OoyH;j`BXVxRc$Pl;H!({T90tsq&lYns`0Uw${0Y`{&RgBG_()*S}?13Qi z_CWMmU=LWhQa81YVcEkDc%`Zf)XY8#A`C)VmZ&McQGT}|$7q*!K}9Q^%@xN=O!s8u zD_LZ^Sv-qtN-E88$hiR;Ztnv=gQ`MKI|2kKs#NYN02=#-LuoW|nNPWB(v}x)xf>9? zBZ8UxMtHVIlBE~}LG4lZG&oVqJspqORy_g2RLhD5x7k*W3CBeh(X%q-Q_q8^s3un* zE1H_V38|#d0Lcc5#Y)PdUVOEKnix%;#;N96@YT3ylctU|XK0$B13P44T-_H)j4=A~ z;lRjC@u1%6m^XfmH|TZ+FiSL?TChxR#=Y^a(e2aF8nd4@_Kv( z1@P>ao!(5Ljm!Y%HzS$P)WaV$G7WghZ~@Czhd>cn1f^Ca%NQLEz{rO=#u^+WM+}Kq zlg2p8LSG;;{ISx@UB^l=TtA(dUb85Smh>}w&n z71eNkG9asm+lsi(sJjR+D}CzfE%$tIE)LhkWX;LN*daPNTpLSa9=OJX+zXk3Nc%;2 zxEI5Tv|j?(LF2aEO9d_nx{N_+v3}6yfOW3j?{}r$3WUc|lTn+ylU>o3tbd;D2YwiJ z!+Ab>7KIY9YoZSNJgycR4!SVQa<2qwR*KL;?`6S!5paGAf3_Yz4N;*J!j-ZHvek-gb*}^LUJr-BkMOJt#$@mwv_o4IY|V3PQBVLqc- z@BmM%Q*>8JrU%Fc~&u#y9l8I3<~whu+vme!#)hWO0$27&zvbfgx? zjrN;CXx1!tQK_Qw`_1-Yxd`-i6X6y{(B$h(_f|lS5!1a5&t!?w{xb=MS><4;b7-m2 zen&pkXumTLpdDE1hM-a?UaU#hu`;DaNf|2Ls^19xxOX8!ar$n!FiuoU8mVK0Cd|~W zaL3*(E7Yl|ixG4*tZhqGm0cC0|An9d*`1RzG@CE;^>6Ox})em6?Hy zqPMDw?P3?UG@6_S&(rW!VLEM>Xn9H_cB%UenFHl~S928+N<{>u@hn3%lzMQL^t@=iIMD>+kHX?Qf7CNdb+!rY}3mcp& zb#5F#tGX8Ck^ow&3(H%S2Sf*>vp={#s`+?koF*lp2KglwJx^tFU&;4xY)cQO)#n58s!xd`Q%Mi0_PM~tH` zIlFwPwG7h9)VyFqPMfGxOIGT{!=6yDBBTc9m*rl?YMK~mSJ*bYRaCK(BKI{A6uGa% z)yCAXDs~0>)|Y*=xx2~h&T4|HOG}}xT(i58yNJoLVrt`B8`CF7lGq)^y=y{h31_N#Kj_ECd;l#QN1w}o$H2hdT_&=y#sSXI%ua|&9#Z+Yw@ zk0Cs5w3xbJz49w6GypJ=+5p76CqiBM z*f&Wc#J~a}*oYmpfSl119fv%tqI+msa1p>qYg1JUHo2xR(Q+n7sB=((^>5#f^t_&+ z{kIgY#NEM%mqISiTX{N=&@%ZICN>cnRI#ekSjo66;M4fXR_WQqrbvf+iXDvT8qlrq z7=Zg(wo7U4OZ|!{My$Y$dum0WD9l+a{J!{YO0FwdVX)K`86f*I>ke2CXBz#ycGhND zfi}JF^Si9S!Mp_y$5(r1Oz4C6&p)x!J@ zMl-7JKBQOTka)&nzgP3v7VWvV?{4>%YL4Dcbz+-FdAD}ezM>eoLGJ*ji z=M*S1JCc4=Z%QM-(d;O4>u03@2>{OwiQ~)7{CNQ*L&m22ccj6!CqubN6S~IQlgqJu z4PpjU8-1_YQSICCkw#4%C#?p8K#m9{0UH^L;C=#JNuoNU7hp_FhX-qlcf`ES`QPt| zMv|7dH6M$I{k{1qs(zVX6M?iMJrBfq+0bi8kdJ#4s42>UoJQtZCiyRl@iH7EgYjcf za#|qU+yb%!3L^u96?9+Zj_;?4j5Az?s37nqI~t13u=^SLhXl4wU86tuQSk^WHrKwW zxqVisiVFa8eP9bP=(OzgaGNQ3}#=1BkSZVfyMq-P#q3CR1JPchEcG;6+#01ae4ei?`gt6 zZZ9}ktrpH{YzjrQ82NIchD=37cOCMZMGfTgHt7{wf}c7BCe! zLvU;MC5C0_I-8I%Pf}=Eh;j``(Kyhk))ac3T%_scNrU~jT!LhXm2y4|;jUA{An{zo zIUcg<{kK;5u>Urt59p8;{>_IL`3q~1dvQ#~Ur`tPGX-IdxiZP^#Th{Jmnh=i9yPGt zFSVY#?bcBU)>XY8-BTI8b9;Z1UVgz|3e-6Q+LP_lENc_GHm{_m_;7Aj7h^N1WOI*^ zu+O6R_L7hlYx-VI%d)0P+6-rXZR%2AF_e}1`Z}K8ek{GZzOIGf-0%4fFj_$lx{~`#{LX!l(z}v@31V)t$mJ0%2@jx zL+Owkf_w@L{*<>bo)~!8=2~dQh?>bFtJ=AkX2OWYVczLwd*aw_ES|c3l2fA@OQ3zw z>!P>hgqMsxG`)f@w(4pQ4fj2CSzOj5W@Gy;yEmYkR(iT zM`FrM&Zf8+ZpPwG=&mRv2cO`}zV`||OQn28&hc_?F7*(4xZF8D%|`U^Ez{yypUB(` zMS`W+-gv}y#IUK>^pXRB7(IF!X2I!*VMG)iNW^gMZk)qC3pwjkY6S;`p;Rdp|2d8@ zM?T{5kMK&q{)2oCmpXB+e?(WGI^rp&{CT0M>GXlMEDmFV9{ub9C!w;aL@qSaw*S@x)3rBWkkBBBy~VMC~G+g^8xG z0}GEqf8bfh90RVv6GK|Gk1o29V_kBXtB`Ar12uRmakqh`oFXkvloiPt(h`hE=Kx!z z5B9vjBU+RM&h-KupdUqg zHwr@8=fFs}eFCVZz<-Pw`iuurf-hK7f+fYSUAhDhoE$5~L+{E|p&YR*6De}bfa|m; z^M^uwG8Q_ncDfWb?Pv*YsZEFQLBT6 zpP!7@$Yd0)y?WC^n5z6MFHR-Mw}oYzS|ig`?i+85IG7409E_`_e)1d!+Npv)v5kC! z?tF-2q?RGsj^$u03`WDFG+1jA`0pi0XU|%H-`uwUPWIfFvOUsT4&H_WP z0mzXTb6Z36KwanA3+{Bj z>f58|RQ>yUZ{DxzQ_BNRACMavlzI^TVgGXF^aVoNKu|4)ZeU>S^mj45DGr-ilIeso zZ9EakbU#o#Ly-IS83+^A-^*;*0l$GL!8@3JC)m1hYIaa#cyL$}m=G|`W)}eaU@Fcnj_VYW5Qk?fOJve7eCcVH$Z^wz97$4v{?j#&O>0vw*DZWx^HMk zJ%Twz-Fg=^1#>&tF_nc9_}q@?xG+2zGm{Ld{vMAE({ND}quDawX9|s5h~6JJQEwEXx|9&%?GrNc50cGhvYwC-x0{ z$C0JN=%Yg}UP6pEVu;8(q)}Z>Le@-j#*ok}pIT+~>dY@cSrkPT zOcq&EQa>d?GP*N{Cgaslq|Gu$Hz{R|`J-2Qy5P(#3yx%l+q z^y&eQdxeK>g_A^k7 zLn(9pfd1^~a15#D*)QnLXqTxN83wvzP$*K@jX@Fxb9=^24CzFx!v+<5q2YpP63fVt zr8^ePhVG?-0{%XNj3uVSnwY#2Qc|AmKj5IMFcWh2RC3dm?<877IqXStziP+;T@d-Q zmFNX!OYP_9|12AnpQrUKwN8^NYg`NPoQ!Z&a#AxgV#Y+?cs<3{5{{&kx7CnuJdywEaUg#kX!1=mR561Yg5FK=MoOmdl=SM z)7t7h0a|c0!g^>9iV=T^#qZWf(Dg?9NG>Yq9V{$vVCZ=iTzPl2w=*6B#c%1rs3NLI z;z-ip7DA8iZwo<@2?whq3DACoHSMpWO_CN;V^q#H>}ANqXy_t8`cB1z`8fbLLjF5* zfF`DfYHV!!dbRmE2l^xFxt1 zCi|Q21Uz~AYa-!F)1Aa8%3?B}9HGbJ2X{Hh{yb}ewomMXrb37L%5P-;!>R+@^Ch01 z?V(rqLEram57wE3Svs&oyAYb)2}kVEg|tIl<6H$hG!48pCwZ~Bsnibj+8Z5;8aE9N z?2vFyPl2pij4WVd$fs_UyA<`N%8FHm6Ad<27Pdw$2QTYeNgUlE9i}o<5yuW=B+XZ^ zIFx=(N0#-`stES-6HBq=P_z|e12PTE5-27W39Oit2ToOFkP2oKkR_Vz+Xai@^*Wd- z$q?T|A+3jOZ+qU30J*adyJa42EEffZZh@Rnf|*GZRP;EUqke z_64ZdTmKDtjb6f{rYg8&u*c3gS$NF?UE_}oXDbvELooWW%i!H^2Rp6NFNcQtD;VdI zuWty&ehozVPtTVTUeE2i22bux2;(>Oxdu+N8+~$pr0~nzQ7O!PRm!p^NgpWzBK*$S z$nN?`)nKKs^vmK~%9S9o#=@|XHeiMT<|DTjO9r$eV?4H+ zql|4}LKJ3v*hKvmh@$QLBOcn?Ts*Km2~pWtH8dAcF}8*g&*Yel?^XNpJer`pKZwZF zUz>();(JjSfO*jQ4U;f=?%YaZiI!|NB#B!R89Ss1j_owqKLpj$o#pdo*qrh2HIAzEae92i@yi_W$TwPCvH|l%`;T>e-~Q99?f*7bc`(Ev zGnl0VKh`XRSuB9kUrayNCUswM1*oMjcp2$bvpj`s!F=Qv1YC^YxSzm5e;_FdcOyfV zE;B!V69aXk8f|2lhWkeZrWa7tB>;^KUH1^cvEheq+GYaSX?)T z7#jn_y~cpKJ5Kz27-(sPzl=t7PkGiK(B5KH=)4T7O=7y%+i6s zihe9B(~nipU=~ZNx-DD>YP1DY9fm$xw*|5)SkJ=zTOsR;PXoVkSb$)gkQ6gyDmfc} z4roxB1&x>LeS8h?8%bob*2q2HUU+c$kr6mUaBCLJs;unt$WSu(1GJ!QInlMk5UW`a zbz;wmn8fj62p7!}1#+$7+>AV7Y*Hu*73)cYwN6TcHOydw%YXuB2yV?{nU<2sqpKvn zJW1rJg2$V&AO;_Xu+Z!v1_nYug&4X?{sca*4-~F<9Skk{ zbgq3GR0Vzs%gd`&gyL}5L6R1MMq4=NTdGK3&{A2SWQ&;rc@Ns0-p6MBL;LhLmSk{z@&jJdUy#^fH?RAsQv%>AN}S_IDM&+POq zD4^nSFv}1eqau$2c^b>Y6349OAugPdig_|n;+UjhVr~0YFiB$}z;c;b6y;6%IhWy| z;d}>@xJST=xx-O-1&E&Rh&*B`C^}#@ycbrM0Zji140%&ZVzA7UF+Ef0J2CFO)E|+B zQt#xpYeNoN7vA~TmwSZd+Kgf^xfNiC+dZ)Gl8{@)N+QlE_~nwa0utQwVNxV)s+iS5 z2mKHSY#kP?w?1Lj4XzrukdaQ?J<5o(`=&CY81R0Z){!S8R?@zijM6tOL3)T$m|nq! zQ+QFDIw?pXC~A>Q*>ozH%XOy-+%cv#ftyA0+2_32@|1(tvzu~u!$CQM``?t6>d}{- z>AT?mOR~b8={2~~&=E`y?#R#^_1@d2`I!lhzIwN8d3XP@e(85wpI~=ndp?B>Wxj zyfSvi_VLFC+iQ4Y(_jCzRsWHy3?TLdoK>Jl8whe7pg7JnQ@`-rfZ2g|rJGI6JsyO3 z|4EL!Fx8jQd+#ZHDe{fk1lY?=r`fkp+4(eAXBcLqS)Bln)!^w2LdMO;;?$c|4LZH( zddOqQ-2ku$o#c^3sRo_A>mt6p1`axWvc~EGwJ2u|IMM{puEs5MXMt;UN6}zRqknrL z@TPkLB3a`0k~OTxlPxy|T(y&ii?fvi;T8fwZW~eDymr^Zht;w^rua(2&N?6>;yT~W zQJn}M&T0%Pa!-O!UKSKzQxDT+m;gGETjn(w>|;_7xj4pTS5#E2ijDv{23Oj!x2N8D z<(yV0-uj zVfPexP+iE*>demD)!E*8S4Xdh)GBAP-qT?^&d}|VKE3-N$vE5YAjkuq+UeWSWukFrN#x~mr}Z=T zqcAVH9RLo?nR$Q$c)x|82Q%bLmWAcVB=vOAW--nW20h*N%;}C;E0jjJg6jl8=4Iop zPTA0UbJU>ybso_1;U>;z%G_+E@a2&;s4tzspavlq=O%~YiE4qd8s*WeJCbGH{%>HD zMpZO2l*T;+V#x86;zWZ+h21lOv%=nMJ20yjV`3?>m{oYh8#TK6OcpINO^bJZP%pMo zvw0fYA*>iWeb#QAEt}%eQFpLQoyz|#>IwowOkMs1a^+8~RZ#xvY2f3Yo!8ncowSxO z`=R^pUiJ+v`gyBSCc7vBcc=4uacIv7_r!jFoGRTpwi_76AqEhLba_M8hqWVsiT z6+5>4@b@C1vPe{{jXYV`O_f9^4TWINDAmTuFwDIe)K%8Fze7k|7I_Jv;;@udSX!#o z?-EOHg&OyL5b2Adirh;<**Fwe9r8IO%*7%riC3fftQ{G{`KqH>M67YiNKIAfx3?g& zj+TsTvYMtGeXURbbS_c|k#?M{6G*~jk#WzFRX(9G7MjI{*H2A49Gg)-alOfFQDsV> ztj5d9E=IGSND{Lja(p@DZ#ED~-;lX)ZnS{zC?sploD@~#7lQsU+|z>wz$olS$ixGY ze8PaQq|$MO%xNMV)bP|?{R(LWOui7(uj z#Y*WLLFr#~jHDl-&(}uq4B?h8O**&lyl%_xZMuIq_Iwobgeq#M@ATRJciXo;;O`7ex`$O+A=BmSu&akSB{mJX<}jVI(#f8TGDbF=d}G zy&UYa$1z^MvE^|Gd;KkpCHn+T$T3_$Lsv$e?}Pz1GUQ|BE2K8VM^fPY$YB*| zP>qgflC;f1H3htul2?s08bc!P@FZ|#3&r|7L^U!JBf|*Vu;^hO-(f0|1t;#{yvR3~ zno&!SL6n$7VRh=_`}#g$B_oV5#7JmUrtK+ZR6#4dvoZx){D& z=^r3?15tu^uOzh#5LrcD_5N?yvA7=l;^kl=#4<7a0nQd=W~}YpcM%`;1AQhFb*}>7 zlEhrh3VsM5EbUN4DeR1#qY*u?s0q54{R#@sFs=r##+&pE0}FB9t-1y8gq5fzE&lwX z(dZTLjfL|3<+uI~B`njKkhcfr)#EiYn}XOz`Wouv1bDGeJs=ds$+~U8B=NQjkroi? zjS$?u7Fan@ibJR)UW>OI8Hq1cC}hl7EcZIlWYUPX6$jG3Dm=JNuZglODH9K}dI@SK zZD3;Rx2 zQJpd*0i9_np1;`Tj~7{&nvkF6QYQw$h=>NT`y(1bgNz!Pfk5-(X|y4F-5()0UYkoI zF4i6F^xd8vA^}cVk&~yJoz^|HKtDz#_XfuF?&D-q~=O+c}c*%K>Xe=JB$xW1Az-z6-!GYUFf+0Y;H-Zt?!RW_27$2+y zx?aM*+Uff}dB_IxkdGA;LM@gjoz#Hf689$XgH3*blHLrz`%_Aar8w4GA&N(hID|xg zna(CWrT%9U;Ow2@VW&F_zeE~~!o*{76}@aQu^)^HMlw1lo|laACO)tQ6)cN2bMAvM zvK*WdE`x*&`6RWDQ@})5;w$AK4Ws+zC@YbI$j{=*PUh&Gu41f%vv-e)qKqu%vv6$B z%(8|VLAjnF%eo0`F140(SFE+kU#{J+(*&?zX#TfCY1tFSdmFtc(VJnI`!m2shSagm z0nT#AKu?1W=QK3+!7RIo%o~n|OuNOXkr)`$_sqW*LQdQGG6<7%?*RAoop84CjSwd5 z-X&1_Zayq$tfa;kNqRGVFVOCNaI^&I93__NV#4j?sxU0BMsDjNlhYrD0oOJad>DbX zBbPPy$^_yE8>X?-Ivu&9F_f##6T2bDLmH~uIRhls!A=pH3&Vn;-NTN+*sQu6{Bq!N zZ|v?7jx}^Todw&Q>3BhA=U5VSD3?1sG4s(~gc7vQ_V;qx#sZd~?L2ZqVb+9sK5SxP zn557pESK#r_BY2Q?-*g_rL)$q+%-J!l{}|Nz z_uQgc$etVKpZ=a3y?W2>S#3@-m`Mh+bkI4Cq#t8+z0dYID6r3FsH>1qv@f)GM)&rd zX+zOOWdfR52RkaP@yazwoJS#97VAtjk;EsaVyl?2^B6-$F(jj1Cg=VR>#Ip#b4y$n z6CCcMF`~D7EW9;?$HAcSXNL0}q|;kfPs1l?v;FPr@T_o1z=`b z0G!wB@@(x=p5qY8J=C#ydgsaL)#dqX2+ciIOz(qPI`HpJKNf&=c|H${F6GJSdn!+1 zt@-KloB(2!C-G9AgmroD!;p-2nVgiTTw6?Bb_|1SC8AfJ!uw=l;Fsr1kWQCp2i4EH zXE)_ZR(mK<^6b7m$$AgvDg5%~DRLE*Cp9kRnHP8u<;k)_d3vRw3&6~>062%oA`nJY z`h!ooAfoBH%|HIr{JTMmY2TyDl*?JI~V+rciD(=2Qa@Kh!G zveyaqk}LRqB<31eWyuZF+0Ttc`k1lW?HNS!-Y2e4J%i*s7IRkJm)(YoB1}I6Cu(gV zoe+aJ3W>`Z8|1mrxf3#_=3Dqo1`+PFh!FR%KkOF!Nw?TZ;qEw`*Ddz>Zn2?AcN}JS zi#@Mf?9<(1KkgPgsHnTt7Illgs52IayDx>7SSXJhD6@Z2+c&^z&q9N;YVj15ntmQc z8;BA-w;wIeworB)bD*xvU#|OU2c?nz1tMiP(i_a4%7^LxlBmtN zHSX8MAvOh!Kb6bX_W<&X31{*d%AUnXFncy1c)kBOl;;cpdXh)I9In;kuMGvW!Xcy? znAvj}Q{Tj*nHd@KjBOr>E~folcqQ|1g0U_Dq6DuqFNr}+|4B(?k4-!XU;=^=4-k|b zg+|$C__7IAW5UQtMnnQF2RB$KFgKYo^P*Q@6r&k?m={o@To*fvHRmZfT`LkMx;h`* zbNL{uosOuoFb74O^ zoe3kgcP6X>JRrTsTmZH%F`dtZVOg!y_;d7S4`UwTmml+pSOsGqmWtf>l9!in z1&Z9wtazvo`ivFJ6Js8)q;w&fSr!t`Sh0L$`{E$fTr5_c$I67ZAx|uc^E^+tpB5a< z&w+i&8rtboIe#Fg^QUrtPZU_5uUY$B_mD3n_jh3V7i-y4COjpQnGKO>h`7!G+mo9+ ztwN2!Do>}nITy67oBQGE)lGVJ-TV`j%euKgFj+eAA3*;+?MIe_*#os7W3^xwV>i+q zLjMB#S!dq?7u4CXieToU>nxKfsI#b&>KXjT{Z`jmk)S%e7*t03Ekw^Qp*N#lCWs?o z;xdu+G-x=>Orw%gO83uDnEMiPo;{SY11x=M19@@T21M+98{oPx>kZm~S0i*~Fte-- zXalSVRw&CVV4*`}@yo!C71nfLgUVzNcR2W9S-sP@7Y*1D{q4nNFjwC9H09fiCPKn( z#PW3f>nsQI)7>Xf-oXr1s%REQFNlwg3d+oX2hT9mZ{&i}ZIevC1ITK*m$dON=NK_d z;rcBf*!UI~lZ;?KCeJbEFq*`D6KUWa@1u}79%cy6 zF_K4tKs?9D5S(NDCtEwtG3wMQa!gX-*!Tl5Nq@@P&BQPb!G(Uvhc}cKDNXk`5QlqF zHO`l0mETfxb^^{`NL^u6&8O*ZCo#%}Ysl~7*#=pS^lyQU;>tvfIP_WW)K4+c!+Gu+ z**1r#HuW=&>6yAqdwQkr)1Ka`hqR|p>M`x9O4+w|jvSWO}jE4Ae7 zu|?^3fYi3VAM$%7^PBn=V(RIL>~+i8BnR_53!kW=Zo&!+&iob9;y9R#>KRQQp^vPi z8ZXdWQnDf3OO6%b+LT_PNpZ(lWAGs{Gm^wenfPAZa^#KVk;)ME(E~^lx8>Hws;QT1 z_gw^{lyQv)$3wZNl$XAfAIr|T+l51H+}$(@U+H`Y-h)ComXeHHyy`;_mV&G}$0BG0 zQG#cF^-UKE{lUtE;z8apQL{v!a}g#rO`|l<@gaL_-^>+TA8k210c8F zqd+Ie-IDk47=&BGv-DWz^%Xv1>YUW-{7-{Jel+Vy5+>a1sNJT)A)`X=Z zl<>Uv8SS$Yu#`38r>ZITuR+wi!n@#kbzDyY~hCEXnF{!oW0--_AZ2dx$r_*=2fRtriM+_XIwZA z-v@ZC!gLzDE=PySvFkECy|F93dhGfMQsCHi1u$7UG8X*^SeZZl6a26Mf%Ps%!R<*+ zC6S(cKLG5w4mg-N2`hcE!Af!!P8k-C_qK5KDdwU0=S=;v7=G zzG{1AD%!sdozq?Ir8`)s>tf1?WNRf^cTEoHl`o3)&cl;=9`zyho+U z3_z2qS&U)MR{8FLcwR@K{tlGiT=*5tSBvDMP+Y;!-&zJgtXsjypMZb`g%)Vm^i}l* z_LmT%PxP}nJ(|JTp4v*Uibe&c2Kzeka~u*`pE33ozu`OFgb6EG-`W_69D8+Q7F4Qv4c{naSu3yTE$ zyKiAbzWWyEA%1MMa zbfHmuBpP+ye~zrc%ZE$h)bINA-@6FapMs4QdUQLlgY5Wq`zjh1^ggx0jxpgkS5 z{r^U;DW|O@!*%I%JEStj5;N<+>_5L z_W=r>W6!bRa|Zb2@7vH{Cc*+shv|>d@TsScd-8z(@>wy;ld@WTe@&eU9@QQ1BFV19 zGH|L4?Cb$y1K~|{JLnW#?O}C$8@|YAagRftCA@bby*zJyjmX#YuEAS9JuvwRL^jdw zp!4-(NSLrQ6s6A#6cHq2C6*s`KL9k{ ze4C4Lq~&be)3>=O`kubcbuGg5x4G!+=2KfVG=<;hx-J)izHTDi!U+HK-{uOc7lTTj zO+D#vbHznX8J1jk-{zuPzR|b2@Cl(#-{!JAeVfbvZ-1Lh%Ev%8Xnxs*^xxnEUBi*H zWG@V{bcK*Puzb_UeHgmMeJ|haTU|!xYALJOL`z;^{Q8znoqF!WTu&i1c_4B`nR3|MF*d~Ay7WI0|b!jb3nhGOrR+ZwzUe8gMGPCd_U8TqXdrgG?0uRHHGWg1m zbP2^&UmyC5GN3$;tg1X#RWS}dORn&A0CZd-$#{iQ;k^(fMK#RJSi~+b{9;!Q zG*O|QMix*x<^$!4-9O=_d4o-^V))<7!HmTFTulYyR@fDOjwT(3GV(R*3#sE5Q?D!< z1WSeRzonI51#o{=5S;tw4aOb0Z{s{kf?SBm6$RhU-`nvS|Mx!ObtS5Kj_>X%VZ@@P z>huY(V=#~C^a(GSC*$BW$3u4dQ^;BcWr;=6!`Yn}c+~IuH(ZR}u0on#XfN=$yzg>( zG4yx2n1o%C;luwfmxgw;H5ds*aj2fv(XQBOeTKwkaGW0!i)rMCxJXlF$EqsvAuijl z{E828RieQ0jX2xJ*yR8ChqzEx-asb2oJqUZx_g=0=fJYyb6cWR34l>zEu%SbzV35d z%=wnqZ`4?00cn6zd9}6R=eFK0XqNt0t?-pCZByY%K3_}|%r8ICq$oj^*)M~anU zBczq_3b+eN-sT+HB}7{MobF?ZiKaf@BxCP`T~Te~iU3Q(G&z#6|3R5JHL0wi zjr%$NuYbqu8YuqjzvE?UTaV9p=}KPkSw{3a{||k}OZQhNB2QxD_Vg93J@!xahzQ*)J_?>$W*Y$}X0R{7qciE-t)!w)I<2M%vj;Bx6R?NS(?Qphk7xaKvef;d@L zg&VA^^sV?vufQZ@@=$^Cy}B=W*@2-F2(R#sFfkDCAbS4Bay^X4PFyYw(-|4l?}I1K zqjXx|I}SFN>wCxI>8b0h6U8>wBLgTe8=Pxtq7wz$gXpL(D)x;&`m@ z39DH4cmyYA;iWG;#X=Yvq6)kAKA30_mu-cE-DJj;mm!43APK`J21ztw0XLZKYvoM{ z#`Ra&_~uuJh)t(JbNjPCkVq8$()ZUOmE#w5%n`J^y>QW|dU z2Gdhm(Q&*aJ(V8jAtZa0n~;Z&F~I3!ACCIfQ*IW;l0fw)6JUODtapJd+$=hhcshkk z0JV8aujW{=M>tc`j1>p(BYg*RZ(~09HaeZz(r3ar2j`!!Q-1Nv%3``p#iCP&a`fp> zeMAr)qgLqboSKMgr=!($Gko4VPdsz>mHdASTJJQRcLEN^S@WNh<4+X(;X?jUv!sJ3 zWt0PN;sJt81tA_Fm>HTdl?>x<>E}Lv7-JT70e-9IpOkKEIlk%OmbAMzwW1}R^Bvr> zY-LL-S$}+bg_~N{x;$CGuqBmlbyrUq(KL+zlJ(Qpu4-GGYMHRQWo=t(*{Wpyfoqqq zYF)8k%Sj8|<62fvSUz^_ve7F>j~PCG@HsQEjkQ9xs5Llh(27qEuEuiua+L;@Qp*t1ruIi@8(ti6@gmEIv(_^ zfIl9;)xfmyB|rQv=#Je=1h#@mvtNdYv%N?uyko{hTE3Do3v|~1F5|Q$whqaxf&eSk zQZSp>9kVt_m;%Xiv|DC~S)C96a>%y|(bM>M0OXy5(9Vi0&GyPk-VpKMXl>iz6zX=sDr;Qs@B0B zARYD9qz6cPt8q~&YiNrU?F#h>A`Z(drE|sCm78V02LD_{(G~k0L~71Q@~iAOZ5J3d zs#?E5rb3isP^RmkQ>Jhr0t3$M)om>>N^9C$R@N_Do`#WG(N=$aOWQH-%KGmvOV_uq zUI#<7vMDfX%F30kZ7@#DRso4fM=gUbt6%BXuXfw&k6E^^rGDA!`qtyutZF&FWp&#! zk~RfKE;t7GZeym`u359HmC2@Bn9QkcaN&~?Aw&Kwp8o#wQVg;f$7uSwX0T&6f06K%i72+-L`D?iWbthkrkNMf48;m z7!cL3a1okXyQ0laA?2gjQdoSaV8AqY)vA^il$s=M%fJLluU@-qReg)jQd3|MbF(5( z2>u1CXiW=wQ(!#FQY|N}ZA~G21r$di&E+l7RVzH1;o04@-oU6inaL5#rCxoFHwB{e zC=+R#0`*x!m8|E?5dDBM`+%a*SKm)Us@9@V;fWqliD=viE_+saepamkB0ICHs14nmT{Z)BsM3@Q)LQ zb?p2`4;wpz8!!0yz$!j4AREw*z7)^X4}*U`ihuRdX$JlESGZp%3fv*{)vWDGzTGik z-$Q0kN7!P(eFh+G>MD0RiSfs3zv#$q#YJ@hz6gv|F(BZ*55J4?!{8l*7NwpC;bwR- z)RDsn<-j8udB1upo?Gz4s0?jZ-ZK{-=+@-v;Mss5#zU$SKgJ|ma8n;gUx`|3@8a6x zs5-QGelbq+i2s7(6M(s+_zGa26wKQQjjB+|`*3@TJHBK{NmMN=nGSbF2}9S2yB@Bk zHkG^*jjHP;^hR;-mRJu7%`-ytPDw2&KNt6)vfAP@HLaX{V)m|zs2T^iOr2>n#fNOB z^*6yME9uWx69051Dd$wtJ+F%Ry{hS+P)*EP;*Re@o-g#c6{mM5#Cpe~YJa$v8ehv? z-%(5Y9kt|kQBUUO&7Snzz3Bd=7ej~krh5=vOI7z_zV7cso==M#?8{hN`jO@`ao5%} z^j>k34b;Z94b=1e{){_nz<>c!)iU5fxUEANcaqaPR;hmPJn0~GFYd7ePWwZFVjbb_80~b2q ztIxgImF~tW3^Wr2@{!{#+$@Gt#Ov-lg|6Tlprx5?@ z6!IB8m7zz7dzQE#O(Xsv;ucSzkJ>nPdfoIgHC5b2;vOgNDG0UH8PlnsoztoFVKb^{ zMAckz(=%AdE}21Yx6WXS?+T`LCh@&zGVX2rQu2@XWeEmn-9D^L^_*2V9a7DjUwoRU zx5ONB_+-ELAxZ6AN)n$-%wNO}?N2^^4`97&K7jf^@qhylu++W4K&k_n?!*I0zZ$Nk z_B)uAE5$ttZl(J1g7X$c)x!(k8&RqLz2FZEDpmC%e^_9tBM%|vo#H-w2<5aEf3c`i z4Oqh}ZA^7>P0t4+?xHvul z+ec^j(dK=JmNHRsBkA$)k15ENPGAK(A+*nPhj|c51&|V(2zr>pes1%g*1Udqcjqcz; z#Hvsk35&soGxduE>Vxr90HHSs)ED=}GwgYR24TF)TN&O3)B|7rYZvHq2^)_1|a-^A<#sD7UFttrnjF!i`6KBmJ75*H4D@(&|zv)faQL%#ZS~7uBJ)YjS_Z*+BX1D zJpt$-oLZkFVZR1c5?JX$9|~oQI#4JBVNxEY4iU;)KqY}=J*W{-Dc(muRKlhUv`QTz z(02q{t(FP2TA&luv4LWg=BZfaXuxE0qlBF&Ve8bX0TYs4jj#zgpL&gi-HNanpzB4u z_W|PB)f*-3MTxgw{ZzF3$ME06rC5LC9IIL-BWU4)ta=i8s8)vnDn*-mTEf-|^gZ<} zfi4otP3kwo^C3XbVC42&#H&y*02+_>_Kt-822iy+U%e~PUjdyQIA8rypl}gWIA8r) zpaBA1pgsZ@r6vQKpe|JZ5NL%5eJYe^3gw0B-vQdJO#)q{b_Lk}t`z7Jj3HU>k9bhn zVA!7px)j!m(7!w=Do}ZpvRtZ45l^Xs9#kP=lLWd_4HT%=g9b?o84nsF&^ZEKuf_=F zHi2$dlO^mi51L|_Nd2WTv@f@-{RFxdBkxjmhuUAD)#C`=r4A72QY_Dxst46#fxa`1 z&@*aj0rad|E>P1%Qf&Q#E3N&F3 z!~UVp5lE;0Z*`$SvHckq3|t}5o%0Bl2d)!HOV&4VO950LxUB$c2;5!(^$*-x01XJ- zEzmv(k>{Ymy#gIA(2&6W0&Np09(YioOR@f0s+t0i3zS$uXiVUFfwU|W11}3S;t+;S z3cM=Ni2}_Iyd}`50?i4$QxNa4!21H7wV3ga2z)5eM*=Mkd{jVrOyE<2YH_ZuRJ8^^ zHyYG0OD3uYRa^=SrfNzT!9Aw*G`MYo=~;Fw{AN;jZ>ST+&;&WO=3mDuWZai@-< z{~~dl#y(kUt94`FDE0a1SY;KbA#S2#BHX!f8T!XSgX(W9$k1dHGs6zTztWDt&A@M~ z#e27w4_D_@t_S9xO49T!JHr^RUaQ=KI!gM0PzKZ=E9oaUTRlH{qJ7YYtE=uY4%+Y- zTwDFF>M3wwXoIS)rhjbpb8x$+*q~-rcYyzi)gQpU9&UrWs7JZkpl;|<4Yy}mjTuny z_Na&dFER27)X+Vq^h)6KnhB_PYMug(RZE#`YTqzzwSM2$@&=U>OwY0}$f0&*P|HJ2 zPP9pLa}Qf>m_>K--e1C9H}=aO4eGl+mx1zoJttz+@L?}%V@&VbP=lJ#y955CdQS=s zS8ICD1?Jw~l%x}xLS2WkaKo#0SA`dD*e>q7;=b1R zs&GL44Svndr!1}i6qL5OJ>UjZKe!EQYJGX6LCvqHR9c3Gb=ANeQ6G_Vys0-Nua5(B zOZ~`*rOs;TFmTUMpL)~6obou}w=^*B_Zv=x|E`8C+$S5(fLk@-t|D7aAMgU)69&8l z_xZ_R_6?|ghXkVmHGfDE+#`pS!A%dTg3Iy^NGh5V8USU3YH-TnriaAgQig!q%OT}x zXJ}MY`t-*-3qX@{mcTvDp;Q++YvI4uIScOl&V!&IF}k&!WzCv!?Oy)^eowWUb=6i& zmXN+_EbGS0iLa`|yVu*}l9c?Gdb+7(6|$9KRz8?L3E9Um{Z)Jx-^g8!rOP4Is%p>K}+ z9hOE4DJvQ$g4^vA=-!&7`?UDqn!s3pnLuvV#1G)Fo~Swh75+8T=2lu#E~o=DMprY% z=4wjPmH&ytf7(oPo-^}gP#!t+cjPdWvVA`O3}C)LlWAQylk$Hxhqr~#`!gxeXP~!K z*}h*u554vk*_vq6^4g$OtFV&MHv0s)--Hn%?)fUz_PKKtwU|@R z9Rv5-@l)V_G=63+WA*IWIhAL}5A12FAw#Ld@_BTdhVBJS?|F3N^BxXidc=BF+-Jw10{_SJPKR4Lhk5xz{GkKruMqdy@pF;Z4LvRe&5)ssF^4X6 zpB-O@Su$R(LFp9w*B>M$C7}(&di9}%Y{k^1Px%>Wh#$CH-iuKG3+2CLKDDuJei_=% zH=&=lfb`eRECZj3L%%DrcGqx4zs{)?YIyb`YGezado&bXZ=zpFvF^p1KAX4UDn zkC$)`|GGeD0GbMDSOdeJQhzC#g_Vi<0x_%^lD7!Nc!vWzB?qm*OG|g=psA`zJuHys z5>;;tv{5;w$6~{Ca(||y!Tfl1=3OvPzMUMF>+ez zW;H~et|4`0=>>ou^`Hj;?WMjHh+NuLLX{8nc{a-(e}tYY{h;(pKn(oOMqb`3MgNYo0o`qs`R9? zSJfy#tn^HzFiPEBz-6?0GRNfwHAcOwp(4f`t3L1`#v7~tDbS_r{<62#I8`->Y%f)B zm3@jg0;hY>{biBBBz4rSJUhq6*?8~Lg)%lVFOY=-@kKUMrR$%M+tsFE} z9i=`LNY|I6Rda%p>H2bSmHtVmcNR<%4!e#Mfp@feLd)Hgq@%UdC;c_JAo|l z_f+Vjio>z{sQ;b{-Bj^xK(=ut?B0qO18upmj*9Jpb*f2ofz%%aPEr#DdQWQIdNoU+ zr_}a}zXdYtLxC<(f2#O2aI(rs_0_p;SEuEmVxwJMkb`2zsp?S;sSE4@#+mBgVH9Aa zy25TU&Q`B@&@J{@Kwo;$bM{2zTvak$Q@(BQ3uu-H?Xu??o7J5j)T45-alU%XgT_=Y zH7-Q+<=p?Vg30@~U%t8MCDfi9^1tnwmboBCBJ=r1|S%Mez9 zRRPxdU6t1w*QvJ!Iz#oWdR1Mo&XV1^jcTu|Wv3My^-MX2v@WCH<1|BXzQd)WYg_jGNWv0&P@FtKS3kcY!WY z7gzty_^BGeS0W+j-GFXY2Yb-d)t?(bQ)@ivML>6`9|*Kjy#=0ksa2C1Z=?FM+A!}@ z7tatVV)xjr?pC*XP`t;hfF2U)QuV)xdl$f{iezuRyJseuKpqehLY^cT6%eu@AP^!F z!YdL;fPmmD49NhaNhV|xB*-HX6cN$op)0PqD7eas?o~krUm&0&dR?!g;%h-!#JBFE ztFEs9Usd-xb0!HcyZ8IPKbo4Z?&|95?&|95$2q4cImY#`lh%sG9yPg(h*dHOOXLgmUMiEY>|A?!(D`^5o+z0>sy*K^_|V_JKj7w6E09j;%#cu@?nu{zg_qF7_zw3G#| zm&7E4oy*vzj6EkxQx+rbdV@_%xyJRfc!{xFy|YrT1C~P@?&4N&EwEQaKgOODi&7p@ zuTld3J?Ba7vd;CYc$3qpt?zcdCXO>kw&1_T>*5QI@!WApd}}b8I}Qo&B<3O>PWf8C zA(AF*jI73+Vm)JIHMY9m5-%{Ot;S*TGjoB}ANx}5VeuzN+S}qojd}N{Jmh*?d}^@Q zQl0>I(x!aR^^S<8V_yT-(Cx}5>+Bx7sDQ{8&IPl!9F z5*Nxh(*22eU1P$NI?ny67tM?(alFg{HhPZJ+ylF^{n|;*zu%-9L!s23wN$KkgsJ9)qnctHX4jZqm-ShC{5dImmJ90aYPtSUH_B zJsRU>qrqr2CdidKA4X%ICqX`7uv%c9|k_%BNdCS59YapCHOy*{z1s_6edq)9MFLC}W%FY+1x<*LhcDT;u8~ z#~W--#tu(US{*R}(UEY|k?|b@K zSR9o{7wG8Ub8%Fj##~&7PdvZkG#6Te^7Xf|Lm6Lr2H4oq3=uWhU{v={JVWfXFgk)5t=9oZchqd<%>FG^1D4a2xwJ0_&9dD@Pj5jbX~OG6#jz zJcBZaIk0h=qoPLGJXd7)iYm0Rb(#6DFt$0f!jbk!W>wTkn{rR)6%LGKDU#D`sfPQ+ zhne}JNN!{7I`Kv3RY*$@QW{~)qQ=OxZ0x3}aWdb=Hbh-0%WQ0O)OfkuU?OW-)I@n^ zo#rC4Hbj-lAqM**^TDV|vdG3BkD4Mcvax5QrpjtN--A)p0|x`e{4*PFcBx(W@mX(2g|YIiKSy0=rFkyP`b$)Wja`}bNz_aS_H~p` zj$)q2CH3?yd7q<%O8H-ov`QIW&$4joRWiZGmWV2uWn(`@`Q-@4G|$Uz6O#7)drIdZA33&yoSVJbJP0ZewRhFO_*V)-SqQj$ll4 zxklb=r(w+_x7%2k=;iWV8_SQrPR_k5T>1)m2V=Tju9tsfti?OO`y=WG`459#-+hU= zLAn>PWU#vj~IdX{qOpq%J^T6Q;B zdDax~GcsRelB~@hIl;!hj(S$kHW=BZy|T$*C(>qk_sM+*`*ZeU*M9k?z*o<&_5eDZ3)-fUGx|J7%6%=eg|x* z!Orb*53oXwi6Z2CO-{41`@OHrD{XAM_mEs+W6yZsl$&krW$)Ya2^%}?eNVn_V<)^v z<(D@0SMLY1!*Z@4%KO=SOy<~FhnVA%A7sQVIuEjZEGL+>c|E$td?IJr*mm!yl3v11 z^Xz@jdh6mQT~dt z7O}cVPR!48l#TU?k!q2R4T*874{dCGj8_py%d?6#7>IZI=@sK-}O>UHA&9xGy!)b%ShwhLIY+Ga5FTf3?!8Cxe_>ai{cFOcGY z&w0jl-5P^;!5QpmkBtJa3DQ{H-+QbEw*3Y|sk~h=nQEVn?TN`!+g4H9aY(&2CP&E| z32R}0{tT7C*l|fbb5&Q3#SqV2mCG1uYd)|(jIHywobgsnuDa4-x18}luzG{tb;dDZ z3k~+b8NcgeFxX3JX?Kbr*-Sl zQ-y9KS+KJXf48@yS85A!H0Ii~30r2;$m8s-RvC=E-`;AS!N~jVtu|>)lK0zN?JyX5 zzkSpJ#+G@%&B(^LyFYQr(pSC8X(Z=Be7DwnGnGzQVTW^79b?C1$ZH;?78s1Y=0U32 zVB|FqQY#HcUh{csjlsxkK2P0lFsj2~wS}?kM0wAN9R@2GW4c`iD{Ok2(*F@NM1A8( z%U1*Jw3!`-sgX8zMThfMHDh|sH9{>~OI-Att5Ds`7}aQrC{mAV%)6rJBWjd-+D^Mv zj8f0rSfv=PUbV52Vyt?bF@1tFP93w;@^Sm=TN_&fEM^^*emsWO+9j&_7RDs4wM*14 z#+HdqJ#lYQy}%fqnk?=xNqKH1N|G}lPr`MJz|OI;CtT&~LXCN8CYh?9)EHKLYdTC- z-G9Se#EG;^#YM)V5YJCM(+x(pXKT#GHg+guV~0y^j8=6sBl7v|v@u;D=ul~6w5khZ zM>8Jj;8#O*>D<<{)kqub5u`mdej7=Rn`^!PyF;~F zZewqBs8QWEP}&-CMz8le)T-|oyH#A!>(dVPs^oT^Z#u9BG>#$IMj?_^x9K4y$$`Pp@~^5Q{ivhyvy-w=z{9gMYz zn|kL1`|fv?)*?3a&Qpt3w@n)RBd5(VSaRZEr2X1pPa$oode2}1q%BqMyL7(ik=CNh z4c4oR>e!;1@78IwBY%yG*-Y3P@n-Lsj@PJMgDvRNspB%W%V6L1?$+^Ib;Mw_cYmFV z-J-d4I47s$b*c|zYs6XS^aeJb%UdHZnBhyfUZtCSyJqBiSE>f4T<0x3=Y;zP^|-<2 zo|6hJ=^o;_&fCn`O^ngJa$d(9)NY+7{&~(7uA5Y+-xK9BJ^{E{4P;E80Nku@VoaX^ z{8~L@FggKPtG+N8odB#?vG)>}HG)n6ZdF4VqZ5F_j<>0P+bB(+0Blf?Kg1ZH0Nk!# zHyE7&+^*b@=(OZM<2v51au~Z+^y?Gjx?S~SOl!gIs%kq?k``PB%1;^7Gr~soH-piB z$VT-KgON4eNJkL(cRYq>gpI1B!DvRwytTXlQXl5<|idsIDRdVaW9Ei@R-5BI8T3`XF>(C7Bp2Y9}QXH z+NR1iCWj2oN7|(Zt7L42p}ccwJ}7Tyj3nFP*`^+3tVJ9FSHh}9b;#pE`8AX$3c0M#<=tc)GY?1(jQR2F_cvL1L}8->CzuiWh01-Zlwp+ zbd8BcMUxUARD4a{r2SEK;xnS_#O%>qWB#bz7gD~XlH`0yl^BfVd`OiWjO2Vsy)~XG zV@S@2)DexboDZoJ1|vBiQsYWACCT}aDq~E``H-TIRM9wEJSJZ}tX3Ip6=U0VK9=QS z^`pT^mWP#l0`rt4%fo8KL|p>O@~|4GF_z_FRc0`fbmqdPZ&&MQXr81m+tnQ!5QA_Ml-b-|Oq`N!Rr3Ryx*rBQnMlG>JO}{iO z%MLYDV=T)KHP>Jy%MNv)p(I&$sQ+S2%d$hg!dQ#Qyf9xpsybb!OTXm8V_Z5Y4MwFut_B7SB}#u>6)>ht ze_UO{m@a*%y6p;GcPf3S`p#ffIzBjjrB0*LcdF&p;nH`i8#TtI?^NpzMy2mm?^~28 zeWyCkm@a*%^3)KQ7IAc9KHj?!Z!qfjUFz425hY=_X$*EECTf=|YovTu+H{SH`^$Ev z?NTLIh0~r;rd_ZnNDg_Bze;{>k5E>`^lfMt!tL%{3U6w@2l!V9J=BDXz>ts*lFFkM^j6 z2BY%!s0KqxLi&=E>HLio|zfBtT^g(sVU?kZ=^`@aD$quSxjA_Z}d3uTG zQ3!7CL(k#=5zvKa8t~>E@hrkp9AtQeQz>2w3ZI&uI4I`eG922*5NBsur!J)}rIulC z9LeyxU6u}?TB^qqsYG2PXIOL7EuhQ#2|RTRNZjqEQtILf>ad0#`nHbOG4~}?DI}W< zPa#knrgGla@p$qK929Q&5+%{QncidQ+fS8DiFN~L7gM@LHcLVrtau%BA@gr7iO0~l zP1U)GvobQ2GKY%+U3mV0>ierfzXYQPQ!17C@AON!Hx+J7bGvby>-Ka)&3OS!qT7e` zN(zdxT2i;RrgZifg_T&ydGVYF!g+u$JdH#xUj@idGPM)$!P8EZx{6D=i#a^N;q4rL zn#0dK!Y?E25^r*hrqroN9h5r!5mSEMhLUc}>3UguqHFrgwboj#TR=nIR=U1aQy168 zjpwoG9UfHcC_H^dW&M+7h{~gui2=l$z&PB^5l(Z2&*E@@hFZ5rAgpy#3ep@)6DA;D ziD^u!dviL6$DU0z8n)l3Rtr!Yw%5y_cO}j;g;FnNo-?^Df19w@5ZxwD-O%#1))Pz5 zb!t>MDkTL_TL8F<%>P<0i&CZdO%bOur7mRyr~Z~HwQST2mX2-YcA&0;-5e6?(UE1xC_FP~$!~?VeK^~uk$5hI%F5#y9Uq2mRbqmo8C5 zJ&LK;dR~y++ImirJgZt^t;xSk@1)UT;@lnwo!XZErW}%UCd)|>?-=CqSj#aQ>eO&A z;0eeq%0+uWy1%4Y%z1UZrrZr0g=ZqeG{0tgf(p+jQoOTe+NR#Y^aL&XY2CxzwsQP- zK$qbbj*)`mHMH_-sh;O}f>ykf=UXhZQ#L(g*~ytor{_n*^x?2YuUqT`=KQ%0t-9zsPT{f$M#f*rJ^LY#2!d9sQwCjM-2$3k zOZ6agy9>}Ie&ll7>P!mu?IfOLvS6exX?mUN>~|fec#A$9gC{A$Q$_GRn@b_RRd`C3 z%F;H(2?sF^$*;t4N4OMWS44~+iB1|FLzHeqsZ%M&;zl%)VJBxT$^ZW{C{e+6CrPZZ zZj;t^^cYHAuW()5Cf;fHbnP@H*+5r>4b&dE*26HgthDyPDc)r)eAwPfJYh_|Ih&;= z%Jyiq#nu`^-i5;RxRh(~B!W6d+x)h6*hxdFF3#)56S|a_Y_(zzE)%0m(NOyU&JwjA zE@Wxz+1l$ip%@pQS|*-tTVNT-pK8se+lOXeYlWg)`&6^@^(ag7sz(Xux`zCGYu3}P zp-Xi3qqF71;eUVD`-ICPsKkvd&+QDIF}l~nP>DP6xfqwY2hc6vXL@QYB|dEv)-A8$ z=3Z1U-5T0Yb9%+ZUkUAvJHscLCsA4++V>pe>Q6CxM3Db4MLG7IEx*+1SCcR2Homm3 z#lP!OYwtRqOLY3x3%Rc|IlisNYR^!^zMxTfj@;5)DRj&rZvVErs@H2&J9;)W40TI} zdpt5#m*u2CRap1Co*i^pk1r=|oA>f^sznIUD)-*0;jmsu=v-RPB||&l8PkrUC;npa zhO8J7ho>Ur@Eec61U!|PfZwio2T%&)QxHxQ)A3i1Z*!;OuME$KPRC!l$i`m|=yO1G z2L5u9nv37FuuAHU_qX-N^Ob!?Gycj&9^!w663)l_SI@_LP|ru&aB)mrfWHy=E5zSO z{EfojX#9=A-#Gk@$KOQ!;hk_O`Iwj_PU3Gg{)+L}UtA=n<4ML7;u7(h@QKIq7bE6E zj=A`)Lwr5r8zD<0XdCfPr$)RXu@Uzp=i|M!^AR^6*Z=1uZa(6g5Z8pbCd4%%t_g7q z5w{R=3lX;vaSIW*2z(YHya?gN;Jp~>ixIaNaf=bR1kXh+LEIAYH2!wtZ=+laK1&g| z6nvH?HFQMMqi1#vC>hN+$S-6&UzG5FhwZy#-xH{jhVHz556 zF$=#t@w-v3Lfk6EtwP)?#H~WyYVcW&xYgi;9eVt2lsDrE*P9V{GoDes8F4owZY|_r zi@3Fre=XwHB5plywysCqda)M2JMp_w`UKtn>#u14eJI01z$K!X;UvJ+=ot)s91~zT z4=^8Z#39(iF)JCaVYq?eT@1G}e2C#rz^gkR0Nmku6)+!tN${{bFd#Q}t2jJhwUFxL z0q^7P7d=IBRCO8HJN9c(4n*qkfn#G2tFnQmu{)8gQb-r&{aP*`SP>QDT03xhY$`vM zl`3u@_y#_#);as~*v_u!2QCBs>xkJZ-Wzy8rgDj+3_OvxJ$8@yV&HSJIm~UV_q$@CM%77ASZup~ck*$`;phz>9o>y&+xp2 zm99qtw~BqkSEKje82*M>&SX^ku9g1AmwMf?R*QF@OH@(@1v zg7Z49#O|jc4&F{4SS%j7z_fTl-b9>4G=JL$2)? zZ0q!@_~3#^JMDC(j@S>_Ys8;A9d?Zv@kXcqa@>e_5T0PdA0Rv#;lr*OCgwAQD>!Bj z!ysU185-f~{HnNVM11EM*P@i;Dn{NuqDSYW>b}AKI)7%`Grn*}=dGf!a8~D!T{8>k zBD|zI*AvWb5A%O<MI%LjSy+@0IHf2d zF-P5A^oF2zo00gc*j7{rE!{F~W@3&cn{(K;hxr^}_zJ^A3=acRS+l|U1CBWXI7844 zoE+2_x*_jAXJcZ2_k$a?=f*4bau$Nkio|qpPA?Sdu39fzf0? zXQfO}qL_R!Nxn5YyF-)v+tIUtbCPF(kLtM9{qoq}$y?p;k6j`j z0{;<6EloKf`@0jyjZNisQQWVakCFd%4aj9^bV9;e1hm*0{CnC|IgLb}eDba!FRY zT#_b?Vyj!gbu2gZROY9sNliKpT+i~X=U!OP z60YaE+`)C(!gblgEpP{yzEwP3@@%&pb)e)L*EXi##!F=b=Y`g>|qN&qL9O+);pWtXK5^~^7u zm3CCsLeCG#Ys==QNp(vZ%}sZf9l(3)E*YEc`iyJw8Q16}x5JNIx?9l*idEFJNf>3H zcs`Rm%U(>&KsX=oWhLFqP^3i}inJ(~<8wK_57Xx=qCcv3mvu@%st%ysqw4jtZV10$ zmX*F$d{#zd@V>!kAm#_q3`DM>DFab%|F{A!H%EFVtrj^l0kA-kc8y}GN;tKg=`ZE7 z%DJp^&RfN)RZL%v)O^vP#&mrG7leGzl0W)9WrvPm%+N8vS{l~JwM zOzM-d+@#(udqCzsqkBX@1N;ZZ z`T+CA_vpu0GQXGal)sl5K+In<8&KjWo*0(1$=z#eb_cR-QCYcMR*t7`>KR$DBef!G zrRRgG7iGQ6r61!GKjXaQ`#qU;lBGS#e8|cTO)2LYq?~7*R7E$5*PukanZuJb{dm?I z&$roM0A@`8HY*jme#)YL|4YsqBnz`aHX~+(T+MLHu%{5eWyW4mZW;D|HhB@p5OeoA-E%g` z_nGE1hQw!&r^Cf>hzu8vi(D6ti~jD^OLpgYu~K+adGYSwJt`j09?pyQie|YPaJjq> z@Ot?G;EnQOz&kj86UT2se4bb*KJAew?iW7-t`hG8{#JaJnI|@jzae~vIF^%#_XDLO zJOJ-Q&%+nQX8;z73c&H=I>0I7KJdAOVWqeWF;|KQ0Yjk7kyoOuLWVwuEe!8sxQF3U zhJ}hKeGFT4*hMj$U8|x$OWez_#Z587Lol1+8BxnReATTviefe~+|BR^LlI5!l3`5r zl=#mwvpJl@uouS^a`-NWo1=$y?2uOIrCdIS%?w)@Zen;B!`%$`Fg(Ig#IRHht75vK zHTE$)qXY4*>Oe8a7`i$Rh`%Y*)p1z-ebKItlk6|Ul7KY0hZf3Zb;fD-eiJX^V5knutN`@^AmoXgC zg(zn-^f7EWtZli^H;yBQu~m_3nG z88$QAq+?1cekQ}^r6l<#4)11|UBHZ$DB@CZXOiBlQQWVngpZiZqqrDii6!Eh$S zO$>K46jPXn;Y^0j43|&gHstU=4j8iq3&HZ$DK@Cd`~i@6kryBQu~n0*PyGi+wKiDCAo9M7dg%bvMH!46`q1dWOvmH!;kv;CP133^y@6!cfelRE4h){g|lm^#FoZlHgp1)eP$Z z@isz5FpgnohRJ~Wu@}VF#x9Os7kg*yeX-BP7RRlPI}ukDKO_G7_*>(*#J><9l`u46 zT*8Eeixcin*qiWuLQ$s`oqp5l+fJ#SdvzYtIoP?m^V-f`6YCP+PVAX9I;k}2@}&7m zHz(bhv^i;O(t}BFC#mG*pe@M+t8_h>klri3 zFx{8ll)fT;b^2}TucUvQ?#f8Y7@sjc4W@cuVFY9+%f696< z%hUaw?vuJN>war@PxgfDS=kNQ3$w4yUX%UX>_287$o?|>r|hVlgq-A@b8?2{T$Qsc z=RM5yIBCYNb4Q#w#A6>n0k>m1W7oF}-es79luYa^cSlMN-WPrbQqC5Mcuiav%-?t; zI=(BAhc^UK54*Y{?B+IN_x396);3{x_G;|LF2?TbQtZ06V3&0n ze3EOii@E~4rYo^ax(dF|Y9YiSeyqzKPY>&8cuV{{2y3WQUzhu&5Otj>zL{YtnJ!me zpG+|uyI$lHVoTRc0IyBC32*~L&EdzCR}izVQ!12Ags%sls*IDS2+I7Op;`1@;t<7nnhXPA)MZw zc;<8`nQ!OtQ{C4`3*pT^1UM`^#w&!TT$D8%;TbtZS;bJxP?tlTn>gmK9u+Yt-Qx$0 zK7%MV9C*g3h*^8)*MPU5`FFtG3_oSq=`4yF!f+bH5W`y-KF;uUh9?-h&L;W{hWQM2 z3miI|+M#U=T$y=hhf}x1%{{3FbPMYmUEhm(VQ(*L`Ei*9<9ZWJV|X#cISl7B91%nG zcb`Kvk1}-XKzX0Cj%cx8?4uhx5QkIslslg^XHq`3bH?zK3I8hWq<4l_jNgL$VQu-0 zoj4@big$*^WGYe9KQX0SW_w{LedwYMxQ(Ido#j4tF=;HtE1W&KU|Z5*Qxt4MG$5TS zNpU8i;&Us!{Ta3g_XTing?FsO{wSOrB_KQ&)&_To7>G zM`1+MS6-F_Dts>?6L1Y|mJ+waYDug;auB{7)(bae0hQQ>@|Ac5mPv{IC|}_{ujc?h z54)uB^?+XizJgN|C5~c+qHyjs2zfsTRM_(z40saXaFF$o3 zg@7(u1Q;bp14hfSp!Wjej-f0@xC0=pt{e}TA?fQcnSe_4lcfmv2UOx*ISJtb3`ff; zh#AFjoScgAL`m=DEd^9KIh%p-3_#q`lb0Y|4T!rT@-l>jfM_>a0eCgef0S4(D*=~C zKj2b12XKW90A4Sz1l%TT03Vh?!0nR0BJ-#WA-sd(W3mz9$K_RkJ8{yc#4dR?;1f7O zQ{qXSk16pKPQR3RS}p^82CqI)Vz*oYxJRx8d=_V0O6M_6swG%K`Jpp(o-g&6RS?U?U{%Q~4 zxoR)q0JR@*uzDVFh&li`R2>A&S1$t&Q?CGyP_F_Osn-BUsY8%(G$1rty@~KxKqbbh z!+?|3JAhNwdw`dyKLcK_jsnh69|B&X{sK5peFWH`J_cNhFNJsqX>rRQ~|HOZ^0RulgDA4@ye(j&cF+Rvy6pDjM(woGsu!n(7Gn zs)_?VtZ;B3-c_9ekEt$zAE{)(uT=`*NtFutqe=(-S!K%JV!m`?hF-KsjGL z3Cbq%0#cjAi=b>0FCkZx_-{})i9dm|N&F8eo5bs&TquqqW}$c=lnccXP%ac7fO4UD z7aSIfV zc@qXh>%*#}BI@dnD9#S5OR0r!FOX1u#?G2pYF zCcqa#d9!#4lsAk22IX4u0eWGrcpsE&#Su`h74M=)){0}GTq}-)a;-Q4%Jt%}o*4If zaT1j4#kZhbFTV41M9dGMTrYkE<$Cc?P4 z`*yA9dUw|+y1vl0C}moTFQq1BLCPa3Po!Mb&DZV9ZZCBEshcNtRBB1;)YKiRNokAH zmZ#m2_S>}0X?xP%N&9P>Oz)RIBzK!w%&22AS5Jm- zUk>j*gw;X={u)IpMsON@@eHimGBHN8F#57Ed-uXP>x~iA8)Kt4w4QF4oC{4IfR_>t z63gHNEC;`9X+ID=SK#k@{H?^_4OkVd!rzTp6|BaJ;3ljWZpPoQv1V9vN`4s#s zA-XHgKgax@ty19^;ltww?`wYhoA~Z7{dV^p^LvK*J=6RSa5eX!{DaKzVDmfF{0?*J z^3FHE7nt8d{8GOZx^CnA9yiGepB%sA#oX8lVs-3z{@Z}x&A@lzcUPc?UFO{)3DM1}d8ZQndAy3jlIV1UO)tKxDf4|7-x&~k5EL2%>2j!P3 zSE-KO4$6dXSE)4oW_LRqzftaAr#_?h*3q-0r>c2j%AOSE&cPAC$Yg zpRM-e_ucLvxqifNLiR_ljO>H*O#Jr4?_m6n!tYBtSE)C1$lD^T?1rYt;J*&QJBp!v z|Ede_H6`IM8Gl{zmx6E2b;DmO{?hQ*9WWcTIr!s$1rvf*jn)3)VnU#@J{StlZpbU6 zPaX&8yX;eI0}V}i#nu;*=>x`9)%aw%BVvNTW|qJHG;@z$(BQA7@41Wcx09I}eLA_l zxS9PU3LELyp9&u73;D$;|7;&V2JaNcO8=!auxy<(Sl><*72S@Mp|T)8H{aBruvSuW zvH9GxQ#6x}zB*q$-(U3$B*pZx=U>Qriex)SxW!N}J2qI43Kcch*W>HXb|iXYGQP^} z58*rV;mF!KW%a=YO^zsH)J9@NjtMOI<*KyP5cp6rK1n?X?5!_27e{;|+YxW6nN<(c z5?jn*eGz>Edn|p|*@tgehx1L~k9C*M_t)14s{G+5!1s|S`+e2Aa^>~D+E5+7v|Zc4 z5e~jWGl&$cxOR3>M0SnU0H^4X*3ovwN6(&3-_@QUt_%9XQe8`lM&WDK&=X=(6#hW> z6nuG`KGbcr$y8pGjrTW+))7U)8mc3ApZTmgT7fI9D~WH$Tdiy**!4#JBAc?zSMRIw zgU;VBat&9lEKujK4%GTBnrVUhhDKktMr|>uCvBvih8gFp zt*Z9dTg<4|R(OK1);9;D6yiJTO%sFMNCAJy{xmx3N-~0}HHfW`rjMe=wqi{Q;cTsn z6vaip>S_}Sp7cFXkBw>vM3CNV5_T}A|u;tfe4Bse04rpV>d=bnuYM- z&@;hAXowZfmDF{d5|~r#L!~0qh!}&g@?XRKbecmwz64+2 z5ZM423lWi}{4sXXI+_{iZgKME8kYO!wBI~!C~essU07H@r?G~OG7OB?OUzFJ%)HQ3 zF}1D=>NL9APb49ePCec37%}O#np;Li(6rN7k174%ov7gqaQk2wiMA%QuCbxLDzzqT zqvq`s7_D!eSlZZdigKv+BSx;XCn83V-4N|rmQy$xmL+a4i)C@l=x>jtwJG>zn(E*z zbkc0H?&$V${%W$XWW58hb+%Oxs~JymAy8n3t#70$;i5ppT;pBT!zhMYO%=r@fl$~w zx9$;*V=~YI-4k}CV}@um=aTXJrK(v>^e;JXkuml(-D) z1Yq3Oa#3!pM!8)Ln)urBhV=|LvN2Fy<*z?i6q}HlOKL)u!TRdJEHR}i)Zni%^Pw#APajar=S$YRvt1hY?q21YS60Nr}?TI{X}TQ z$_rbbP#)`5pi&f%o`-oDuD<0i(1;ja3$s-3n^o-xX31h}sG0k@c$4Vh?98pXHyB2? z28#*s-2;`rP=h^Cc(sA5H2B~o)Q8s!th$(VgVknu2-0OpMIwqkQhvcz^i@@{)$~IhR=bNmez#i91xYcRH#Dxn5nZG`trwK1t$5sZIF{!_c$s2t>J-9n*u zmomb43d(jkkh4=-UsUfW$Hy8K)Q@n0D9t&pX3^-eYE3%d#61^+Y+)=MDzJmYudJvT z>8rdFV`WUhUtJ~2=hg=s=gegSvVH9chAGQIBqsW=vRe6+85}eudSP{SyL@exulI{F zjkT3C&lN>;{gqeRdI!_Y?O_#Yw?WwX)C3WI7fz(kvh$!zsezn0rBl}OpdHIJt>c(a z#QMr^Z`;pj*OQ|QY-YjwHVt0Tig#OrwjA5gwBjM!W+8R7#Xy5tBS{qbYVG(4wIb7E zO$WMBSt;NQg&KHtPp!jBwKjsQG1_hHTHffIKm%J7W4J{FTGqw7n z*{BoEN=Iv|WlSRLDjIzC=p9Wm&KH^sua4}l)mg^EhMYZYO_sX0wv+1gZeiQn%YhbQ zH`j2rBu86YDGsO8D#l7O#f`=i34!Fhf}BvInWMIjyDWP1=!p1)i+`MaNAb; z>tM~<$$*U>6&&lZ9?ov2PH|S#TH9Fl!o~ovbu3)dqdp6obc5$r^0dK&w%rl#P$be> zs*+=tHKUtStRnP2nuS5|$cXT0r%uiO5z99;^<6 z_La*)z!J4n#fiaMo2eg@8#O&t*K|z{3sN4mR3W^qVg=C2w(lPjL9^RZ6og|#jb-@g zYHNfmURqZa#HLJj&{u_Ohf3=zfx_`DF-|UQ9Sy+}oz5#GCg#T1nL{=ONBU48Wf>V< zz`s*#X9X8vK7wmuy2;{ro~l;PMu%)EwNH7F zt3?%J3YukX#IlX8J=F>RP{=n2^DwOzC`emuv<$FT541aCrRWWiux*Ukd=jG<_$wP5 z{Aj!|g~Q?-VQqq~is=Ft|bAV+nX&chmW-GZkG%?tqE1{#bi6Qf?an@uSV7$0y zop2;jYqjFZ894q_nb?tL$;hI!rU&aPEcaRjUUvU$w*JwOUwc)E{9Kb(|v) zPrGoboKdr|1mrSE>QnW+U3>Ms;*Hx!jZ+ZVh&{V!s< zuN^AH_#9}DBhI-K!Zr;m!N0~d5sFniZK+${1#z&302GBst-UpGC4__(ViG;4iyA&N z6S@~sK_52heC05KwU&QH2UKH%^}6z+&iI2N;jgJ{XtJ$3ddv<(3GHw(?f$_?EcDw^ z#vd_^L@hZHRY5=5xN*Mu{&se|d2f;`$vVb6rtDMw%RI%A3vtpbvyUA@l?c_>ld5OK{^If7;G0t()QxA_f%*o`64INlm_*p^(Z)Xz!YPL% zIK?*`%c2I#!VLp|l@|f5F&2WV*ZZrmd)Ppmlf|`F{squkuC?7JoSO!)FMuv9s`mS^ zF-DZ7v+*0kK@i+!ngPvEVS^t0aQd|qZBRbro&r-W3hV2AO^~&&$@tAv$N&X{Rz^ax z-&70QD(u18e2PP19(I=EP$W4?ChGWZ0ZWd(GjmnKZ0c9pH52uuWHuTSmW^bUF-Jz! z70$B}d*|Dc?&P5lnv7M}jNrJjDAfI?A&sfFO#l{*yx4P|YL*0M`)P06I*l!l&<@xO z=jmy=6G57BvqZTS2p0^kU`vA?4l@l|DCR(l0jtW!YUqTig+)eJ90Jf6+nd)m_M$*_ zwON1&XSmKfrZ%U^);h>OLZc3$!!)ac^*eWx#^7HrSviPHRuJ6@?k96C2SjdPx>ZKndY43@>pbsoHjSyRwsg;RT}2 zF_Mi*N0IHtm)7}fjqA_J&hdbzozhrWN0%Zj4>V$7+D_9`%`7()cXU`;ur@Y3GQZf- zVXA-G$-hKucW{`<>c{pw*QRT?W5cQKbgG?r$_}+DPTiR{Njn|cI*mH9Rh+W}PuY34 zYP37VB08n<$(OBjNFdsTXg`1t!LZnF?ftcP*x2^!oqZsd*XG_x9*y^~fBC=X z7v>e@)Ax|5=PN1NBlTOVY3=xEchlPQ!R*g#zQ|abw8*ERriz$m;4knX!r{H3zggjP zI6j-QMh2Z41!$+lj0-Cs{sf=6=9Od4#DVG@%mFw(tb?VctA-)W?{jEwHLhB*S+9_Z zHtt(_P?OLMWA@3%)CX&HEyx?PVoBL(la{VLvNcDVZSX>(+zwNwLYy60gUDLGoa#KE zJ)riF`r%H~v1jB?%N+DKieN9>`lUE+U~Of0_5-)EPS+j75y%|w>xk5d6yl8to3WKw zbJAL2Xsjhj1UV2VDbO$(-`~?)LT~`I$h;UgLFXcbRvY09DdaEEnFOl|90g2>d=-Lo z8~aRM#^*VXz8Djzh8j_dBN8$>W>9K_JIpZsX5qpvG?sd_ zQ4TK^OCsnVo=vE$56<$JntfKbZC2eP^s9!Ajo$L8VY6y2KXLZ~JoKqvB_F%Yu~dbY z;HG8$G(hMy-{AGU<}pZJV|`r^i{n6bSlmXw&mG|Ul-5pZpbZt>SKNj;X5br+h68(j za)4KItrJLvBS)l+}hb~#={y- zR6WPJDsH_-9IMuFYgh+v77x3ZSP)HvlS;azY8nnZQ z8c*;9aJicYi&Y=4gtZ(q$5L!{gLPB1kqD9T36Du`Z*A$xKJexcED&v$(=i0^1Pctv z`oJt4Lm>seN%)Fdxbt{|gQl3#>M%~$zEpXjp*lR9*!x$|^2+)E@1lgIDk_;m8y?jG zoLo9$gEi9vp#b*O!f_UN46iE8Y;6;Gv7E&J_f@6ddH1vO9ITUvjcM)_5OaixNve^6OZz?Nx05g<*)J8U)eUv zEOpu@OoI$im9`0(x&3VtC;A()60WvZ(V-Gw?VLtf+i-T%Dx(5E?B>DlRN`)de^%q1 zIkbftCev}yNo?~&8(L`^wKchDwyNm}Her+f)xHHBao-c5AI+_k*h$sv(5N-EP@<&u{2*M8NC1l3l@(N%Nyk}LM|!XNNgiIDC`tcBy0PXc7Sa| zW3Q65YlnunlQ7bZ&*fOs4X>hcWz;$Bf!LRmo#)*JmPNL&A?Im^bsAnU{M?EP z%!2fU*Xi(wQ}8eNI|olY0y_@eu?vBw!^Q(aL+Ti1dG;t9-oK&(z7+1w77VYhsNknQ zeATc=ID;szva&jx#aW6|pn~B8D=Hf12GGdbRUAI3qM|?8)>KsB@*~ahFiOJ*S5#b8 z@2eXS4i0Ru6r(qG9!Xc&u3PqqGfef=OjE1K-O1xPP-h}F~Nb;Rf$_$s@- zM#AAkrZLsNInEsfGZ?1S`77bExI(uQX^Xe*{cT2j%15*Ys18b%1_DT5S1;|*a` zcwEuI8?2qi(;MMKSTOit@Zrsdgng&eZW6t9)C#o<=V=b2VR`OfU^AlQF}*OfR!1zP z--?A{anuY*xMtvGwp0*8EyK0fhh+w5npQG#oY~o9xi}(H0*<2M!MfDCYY0>`w_^%U zdGqt%G8d=kV%ctmWlXGfI9ssxOiMdD-rj)uKUe%5$FyBAd;l2==nL(Gnr#Xl86h}# zfw2W4V+;cHizinsuaK@M(I6|R(E&<^X<)L`whRB~s%aSqR%qk6LPUqW>||l16`L#8 zVASKISU(6HsI*2z`!nAJoX*nfZ#1<49%ySqQQG&!G{*;aL(2jA43_Zlo_$iZN+kPPxjoLa@cNEkK zyV}T1yAdR6IGTFG7Q`q&PG{?BH^ExjVSo=fS2sFfWkvBoGX=7)bJLUD_Mox(3A#kh z7pN-=$?L=&Vcy|0oo1|m3ASddtu|xpO^+)xTVOUb+`5Q-cG!`nRf;I_&BFa<-Tqb> zCD;48EPbQP9u*_2gV>ZTsUi&{otuvb$yozg0jD$|8L0$yEk`!t(MlcTGf}45O@$m| z+^S+#Ev=%V%-8^fGQ$(E!7Z%WT9P8V@1Ui?{jyeaO~779m<+=dNsqa)`Ky%yb)`=uXts3~=VM!H@I8a%%k+u#v;=)1P*(veW%&PM7 zA`Vwbu*-~1neg+kq~n?|?>A~IG61zBRfe@O0kSI`L%PlZn`WRDGsp^@X9WgZfgu=R zmAp-6?T$^Ugxh5K!&YKmnZLd!V9pY)$Z(u(3v6z*GDW2V;Uf$@S4CG4b>EuPTkEux zRkRicB-|6ArrQ>!a75V$38(0ZFTDR4P9ZkB$=JWuTrrD!HU@T8QY20 zM|758(BsftjB^@1rFwRZhp_}Up`-vdiiyqX2uw|?W*8IPleXKY#&YS+WDIH5I2 zcyTf)0>gfRwNx1#4q^eWcauW2I3;21)u!XjM7KhSgu_xi&@h`yu8i<;up_`e4lTRF zBFqk#M9XSRfc`XRG_-yy9aGtCY_ecJ=G*;Pc7-qIQ$OSBRN7$@1@z<@%!oGNd^}0X z15R&+Fp!FNWQC6D!(e>|O*=F8P~!!QjiH73SkxJTaYhHECBCMhbC+D>d;`#?*3Jc{ zl<=svqs*wqC@z4xcix=W3f^99`?Pp!@^tpT2BF&FZ3NvMdWM_>t)GguPknV0tfaP9 zY%ANC-l427cKwKmq=llPh1*0AX7fv0MkQzuaZI2-gnN;&!t~l9Q9vnd$=f~!K%8fZ zE9ciS_wfFk88CWK&`w>%C@~|%p^*c_T8QzX7fG!y>=Vl&Aj6_SvxO#_faAJ7F96U4 z*z)6h{(QTiBYojWDjy@p(t8XUhbWk7`LaIU*F?|rd0IjH4+)S+7(l17O2P)Qwddm8 z<1mwR9<`8_9-bVmWg6}IwBGbNjWQiu8UJaS)brL_g&1M$0v=eQtxY;S>hqiomX1HKr>9Ink znWX^-Bc8+}1d-Qax->L$^qu|J~)V^JPN+ zp*sKXilmmaG{e{tKJ4ajrFDEm^E~bW6w7j2VLeUY z(GjB3qaO39emDwkhY1MJ*9XbqoHr0PrtK%Hrdhh$2BoB^coZ(thc6c6@IXIRp`8pq zmcWz1wN)YVf|y5%zjh9S$P+RTR)%Od#i}h8Lt^tq30ia1H-z&Rhj4R%xzNr11~}lN zfL|?Qd>ZO@ba6z-nPX$kRK_aJm*oP zO~&~(KRq@YM~v-w5JUgX=|XGXaK0pJk0JJdeg7dRi;Jaf>~hihJH6VF4;^if3S+{4 z^Z;#$j$t1dda9|NgwT3jclOEXSqOdC|NpN2weGO!qvZcrCb)H}dJO2(ssg^#)?{Wo z%Q(^TO?a_#+CIanEfQ}7o6EGe1;N`sBi@lWJkRQEXQyBf!OV+rpu^JAS}iQ%Q1d*C z&5<9_X*UvD&qvYrJW}Py7Ajs=q_13HRA7M&LyO0as~i)zb&7;{8BE1B!N^4LH1@^j zT2mLS#l9$A@4%IC90mvLN7e_g;-l}d`D>K`LxJ-->K|TC>$8bgvk#VwSYkWxHS5kZ zT3&DM?pSKy)*zsFA#mI0Pqn?lI|K0~nVE&~cBp4!SLi!BD3nOF>s-JLv@w3b3U zIPH`L$NjXn{r@9B$Ej}C{n-Ckqpkh2sZVX~rWI7BX<>GKY5rYDoPWrZbdy5ap;qJfhE45!otA38!Xy?X= zL6_!fUjXy4<(o|Q~v8q zPv*S4(f%E9YOd3oeaK1}ErUD*&ixMudn60$086J&b0kGFuri0eyZ*G=Wv|7dOjZ;< zJ?-!W&;11t-#Gwn1MGN#Cfy3rZ{f_Vw?h05?z4RYZzsTaq#E!S#22P~c!PW~esP5u z-YND`3YFUT4#f1U45`^ErRL5UI0T#gx-^YT}U`=Ak(RQG)0mjj#VK(Zz19+-$++;6TtAv(`y`D?bK zdID$*(YX%tQTtZ2oEQboJ0@_4P)FikH-=aP1fkBOp+>`ys!iP!R*bw;Hp*yjTv9IF zG6%O>8&wW+l`Ely z)Ugftk3Ls7i`ByqicyTuNA6l+Wls9;PPGnqjinAE*~xt(WFVPD9KjltK!!_nCdo)P zim4_k(n*CQrLYH~t2a6Q0@jA2FdjtY6RcfuyVU>RMfAGCW!u zZ9cQ{Q9mPHmpX)WsvQ?&wV3EkN*qFIKKxQWMGnPWfsob->e&gvtomVqbtDQs+(h%r z|JzEXtqW-~Jwc@HPaeK`LaG`>r`8*_72`=It*+84S%@y6%2_H-6|q!^#xPzfjfzED zN>U>+wLM;^Ghh88*W&+_D=vSd$-`YPO55YqTFFS3DQKZtXcau{gqFagA{h2<2Zb2c zmR}L8L@l>c5n9j>TwCH+3Ny65yredyR9d|zLW*kqHyVGWN_tKbMQw9hlvH1>%9dTk z%?ijuT%4*YMz`fbx-kzW23TsRT@UkW)t-afa12#W|8Ofr>a~`K`j+NU@>-~^ptr-qIjp*#w$7(oZQt4x5w1%yJLlr> za{OJ5zn=J8gg<=h#&r(L3ry(X z@C4M_Gl}#qil7aaxrJfEzk=&OEA4&fJs1Awr`Z|3ul4s3-u}-FnfAbW69;)8TX^ZT z)PYAk4jGLB@_Ds9R&1A{7#UG&Bx5|3$AP-T~UcsJ=szwPVJEG227k9 zpEv`Nm${=7Tc$@*3jHV~#e1_|^piNFL$)iiWqINZAZ}2^gT9=Zl!K*;W@>QhDU>%` zunbeZJxw4QLP3hDF~XJDhgqPI#OaAXW^h?Fkmlw@pF3M5PIdPL=-NrTv+!-F#Ochb zMgL6g)JeJ`qlG6UacV{@vIOCdh)rQ`C?bMcW=3ab7mm-&NMU~A7+nugGRJUyW=5h= znTb;)7$yssrq?h&Inl4;(O4p}AAun;)Rg7a+=P}>MX3c<;?&q|#d#J{A~kdwDh2jv z>j5Q)tzp(XL|sLsu+-Nz+9d36*3HR$V!%1mrtqoTZV*-<2X4gTw^ywpNX(6jh> z5Oi+7C0almn>Tp9`ZsYZDGq}BF!Pq_BrZy6nI2;XO3QRKNv0V~nZ&XAfkYq1 zp5PD=Fh>bqZf68QLR~?_K3jV6<3?Neb$bD#ghW#YxWNL6%@4(+un97`bMp?Clhvv( z!zOA=i0;W2VCm^eFpgTXML~x#Zu>g=6P zEi`dr^Jj_8ClZ_Ab%c+2AWufOglulGuD$t1hSyac{iKnu27L@GcUlrjUTs zPcnRu;mgn+6qJ!^^VoFs z)>jl8(~ro%;&h94I*W&FiPMp+DW`i4;dCC^QxnTc30q2NZpnzJO2=m)81JR%<~8Og z-rWth)?2hAV0I)bNV6@_UG z1!iJmXmuy};yq39geNvuvSB}j-R z%|Qz1V18|Tid8FCsVfTBUEFttx-VC8 z-@e~_CIM{i|K9t3|33Hmo=XBV=bSln<~{Fu_q;PBlvEubO;((UE@>D54bZTR3r@1_ z6H>?8GdRpM7lCjF28$3_EV3|2JZ%vKg+cpk&-3B{O~64VE9)`{d3$)`-6O|JC^0Xb z3BiB^@3GMdnY?>XTb&Tg2+RqY@Ow{NozO%kfI&tADo5o+XXVgYgJ}~;8wtO1Iao#k zIzW=MURS8=ayi+0+8l7cQhSA6U%MQ2RM^6qQKwh5q+kK!00392QZTmQiv}yMueqSY z5;W3WRF!$osuWhb3_=?leimDrSwJ2EY6&_MDZs%fDnwF&P?-v0MJg**>0t@Bfem1# zjI@F#GPe?nRJ3^3B7!iNN1$O>NT)z`F(CrWheW^54u4Epknsb(f-P?d8B8S@7)+kP z(2??LStjKbFe7%T0J0pkM^#SDFw))u$_OD${4#-Pt&7!W;bo-)u~vY0gMzV%#Zm7O z-d=;3IpUqBLcz9o8Mj5>44LLUrp27AGyIBFC8A&AcBoYYqT4JwFfYz|`m()kZSC%F zYrD}}^P|OSpTb82T!wgLI^5H&|FOU_OX^ks{KQ|9ifg=&o?UXWX=#Z6te^ntom(xZ zG_Y;`WAXDvlan%wUVaf)mKihnro)P$tL4KRH&K3(yFaeU^ZhbO-y8{M?xcXptx)Px z6)G$Pq>e%?g#^Gx=`OOtOVoiIYu!YdfQ)=_ASlmTmu3dLSg4G4#!H9IL4xTDDVRp5 zQ1*obfWs1;t(!ufuq@F|BI=~gr&evg7-f!z=cwdIB|j!5c#p$IK+SHZQV|Aog93F@ z_Qeu{45G}?EshGJ8nBs2K{_+<0o;gFU@RFA!#7|W*LaxPodqJ$i4c7n;WWBNB=7L( zU^xp^HUbjU*19D^8-a}NF(7!vMo?dB?8j6xIU3}szyQ}psho^mL0)7^I-xIbuMye6 z`k~QikIoIGW`+?eyaEt!s*hNH(yz9a zh@U^xXoLltKbyHwYEBpg1b@O2;YAJaa`cLGK(xFgz0CN;sba#(iA|Gth=8Ol*03Z)xALpnnR_~>vn7Rgy)E`^&% z&CUYMnD~{9Di9`*Ru41+;i-mdDqo#ws7|aaHG}Dxs+>qDXT~VMOXYVHu>dj{)R2!V zI2t5Wa~Qy6?V-h5mn)WvL^2bp5H1l~Qqe-BNsbVcE84l{Y$2fe2r}@-Hd8W^VWP4n zp=Lrk?V0A<0kyu3IRWfKJJ_%jF)TZ|fN8qD=u==o-Cll16AUw&P+?Y20NfJ@PZLPz z7os*4;#@g_4SSwwnuHgGT_IcoC<-TY%-P_UK|=tARyIP?1~vlP1F=8`4|^f8oyy5U zDka1-PcEVIWD<46e)VxCL)lR#+S6cYS?f;n;1X{Ux+7~y#YWVFJ5)}#Qi;Lkq@fL+ zASj6H@TVX}e+4d}weAMMA~aat{}he8-LiE_Sf{D@vOcQZY`$5by+1 zAWL=_kZDH)CBoLR*8M{!g*}A}&%iL)DzKdBktP+074!l6P$R7c#*0*79&9fmYF3z- z!`>u1&^=cXMAo|33>e*OD=B$hbU?-sDI>W?ZWD=Cva`@1jH8ed#sM|RiHDxSI8K2n z<5CbTdLfO-!w&cgRq#cj<@FM}oZgHUN)Nn(PT1r<(9<}5JzGXfLE2r)4A zW=*BG3gtM%g_PRWKobU~5siNUA79iwu#xeTA+5TakqGG66zYQTM6&lja31Ku4(TovYrsdx)Q(!~?G!K+^eUy^Q3dG3rTi; zBe+cDSm6LF=D;H`NdNq-G%`}A^x^CNx|*Is?G(c=!N!|-s@~b-X>9z=ojvYq5N;+@EQt9k^+y(iEJ9FiIY+v1aA;r zL(Zq}I&20g9|%Ook@`-Sh$xXdQ0hCuRAj=3DQbusiqe3OXk=b0m69%G?U1T68S8w9 z7{!h@6KH5BCkO+B{$Wq zaYAJnsMSc8tc5o#!YqMNy$g{u5irdx(Hu?Vc##B6T{Xr+mJRd3NXm!|(ne%f5rlz? z#GF*{V<1`B>S>;fJ72PbsAdwX{D<-`vs%(ljJ`pGI+=8Nw06NroszsGE(QFK3S+J|}16mr4K)%Kt4g!E-V=ooRr=S*gy!-}I9f?jZ7Ok@h^i@S0n%~VnmAT=4I%5kuki72&&7@|JW={T$$ zw3d^(;W(n8%vhezH-LBDzi%8)%TGXvn$8u4f!T1hVjiD=O)NsT=t?1JL ztm#2owopc~IuD{)e${9Mp4?EdfVW`iCUdM}Wa#o>P*)f!j7^IPpJcV{q7WQZH!A=Z z6bK@12`}??&;bXS4uEJPK4L*Q1Li1<222w*@PRopj|{~kn&(Nl7DNYVV=n!98d^^T zfYs5SH#h{^^M;0_H4Q!iLU?Sl5I09@s$?uOAM^x`dW1!;Pq4AXOqj9e%LZAhM?eK? zE{(yapCPo?rvqNTV9E)FAUAST2Cy@y!!k#d;UxYPyuYI@l0Z@_`?BSXAqmr0shvV@ z7c0h~ME;#ZVI~xa*|TGfj*YfdfiBuo@Hm@uDQptB{E-Nd0V_Aywu~XSj6t}>41!sy zhgM$#WJA&~A(1IzRt=dY2s>C}MYUxri3)BYLqG7QTL4oJkpiNw0t5_TXYnO|b#!vW z>geQ_;8q<;6cW;MTm#hwbo3#O0`?>Q^bq)9sFd@oplb(N#Hvceo;=V|Z4$5qH=Fo;EPWueK){-ao!;cPdf^XFDaYDS|gb#929QNhE2FP&SJ ztNI!y<7=FZFPn_7VKTn#;+xWuO|Tz%WB|M}aMo zPEISPlN%x6J0fIfm?W$+OqxP?QpDrfXsEDjI{0?eaW|rL zn29oUg>J(UgV2jJVqMKIBah8`JhrsYvBIH3g{76qNShR4BX_4rsY{`;vcW$T21iK2 zvXX+)i(w;$Eun;YllmOi6%>!3B58aDhBx!g99cXqJx zpdmX~YA`%uxdArJ`UXL&eUF*~js>0v06-(qa>{2w)11AdCU{|$Y zxv^h4ymnAO1z+gPuT~`H0`r8gkhP%8V`LRT?CnTimKjFk|2 zp&yMQxwVB@4@;?-R)vfi{Ei3CwbrK7R(HczDn%L1_~DN{d-#z{SO?y#XYM^LRyyAf z9kesZeU}131TMv!Xidr2zz+BzV+oEYg1)>5ir6M5VrWH0!~9rAb8v$H%0tE>-ap2m zOv@R_TjndZ1+@ROBTOE#o+A5md6B~Z+71q&;IfXHHTp0DP+vyC>m4fzWe+2iJv{F@ z`U(YJ|K=S(0)f9!;9E6$Sv`t>frUCgDOrsNA*?*=&SMdmQy3nK6J=vh2oaQ-l z@IYKw{VNYIih?#&R#WNEAFfJ2{wQAKlN^YbbK*uuJfR!!tB;HG9E``@(C1@)fw~_&iP)53^?|oA*rS6ClD1OMx`{|j>v|i3`WY+ zi$~@jed^HGl;1}w)Rp;pYGjjA4kD!@52^yU z8Y$WdxZ)tea5jYyfqexGl#o0EiP075$msFsEMhf-7|)|;`HfXEG99xLR?MI76u?u= zfj!E1uZp)nkNLlu?k*7c3XuL(0Y^{3fp^ve3d((@k2g}{IsE$~*WZ_w1;|itf^#Y{ zPl?!gskG&#y~X&sxeTFfocp?W1t!X z)flM8z<&h>@`M68CK}e}zhbu4ldQ%-H3q6NP>q3V3{+#F8UxiBsK!7w2C6Yoje%+m z{8wVYuQsMF5(zkcZ8uZ1##4i*zO)odMOpgVj%czI356O9&dgNOL}4PTB@u8#P0gE_ z3dKTwbCFP-)tigre5$n6;Od(Q1zGBq&RQoyEB5Wi9vMXs8lnf�lEamvgByrr36o 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 + + + Microsoft.Practices.Unity.Interception + + + + + Stores information about a single to be an additional interface for an intercepted object and + configures a container accordingly. + + + + + Stores information about a an intercepted object and configures a container accordingly. + + + + + Initializes a new instance of the with a + . + + A descriptor representing the interception behavior to use. + when is + . + when is not an interface. + + + + + Add policies to the to configure the container to use the represented + as an additional interface for the supplied parameters. + + Interface being registered. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + Stores information about a single to be an additional interface for an intercepted object and + configures a container accordingly. + + The interface. + + + + Initializes a new instance of the . + + + + + An injection member that lets you specify behaviors that should + apply to all instances of a type in the container regardless + of what name it's resolved under. + + + + + Base class for injection members that allow you to add + interception behaviors. + + + + + Initializes a new instance of the with a + . + + The interception behavior to use. + + + + Initializes a new instance of the with a + given type/name pair. + + Type of behavior to + + + + + Initializes a new instance of the with a + given behavior type. + + Type of behavior to + + + + Add policies to the to configure the container to use the represented + for the supplied parameters. + + Interface being registered. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + Get the list of behaviors for the current type so that it can be added to. + + Policy list. + Implementation type to set behaviors for. + Name type is registered under. + An instance of . + + + + Create a new that will + supply the given interception behavior to the container. + + Behavior to apply to this type. + + + + Create a new that will + resolve the given type/name pair to get the behavior. + + Type of behavior. + Name for behavior registration. + + + + Create a new that will + resolve the given type to get the behavior. + + Type of behavior. + + + + Get the list of behaviors for the current type so that it can be added to. + + Policy list. + Implementation type to set behaviors for. + Name type is registered under. + An instance of . + + + + A generic version of so you + can give the behavior type using generic syntax. + + Type of the behavior object to apply. + + + + Construct a new instance + that use the given type and name to resolve the behavior object. + + Name of the registration. + + + + Construct a new instance + that uses the given type to resolve the behavior object. + + + + + A that can be passed to the + method to specify + which interceptor to use. This member sets up the default + interceptor for a type - this will be used regardless of which + name is used to resolve the type. + + + + + Construt a new instance that, + when applied to a container, will register the given + interceptor as the default one. + + Interceptor to use. + + + + Construct a new that, when + applied to a container, will register the given type as + the default interceptor. + + Type of interceptor. + Name to use to resolve the interceptor. + + + + Construct a new that, when + applied to a container, will register the given type as + the default interceptor. + + Type of interceptor. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Type of interface being registered. If no interface, + this will be null. + Type of concrete type being registered. + Name used to resolve the type object. + Policy list to add policies to. + + + + A generic version of so that + you can specify the interceptor type using generics. + + + + + + Create a new instance of . + + Name to use when resolving interceptor. + + + + Create a new instance of . + + + + + An that accumulates a sequence of + instances representing the additional interfaces for an intercepted object. + + + + + An that returns a sequence of + instances representing the additional interfaces for an intercepted object. + + + + + Gets the instances accumulated by this policy. + + + + + Initializes a new instance of the class. + + + + + Gets the instances accumulated by this policy. + + + + + An implementation of that will + resolve the interceptor through the container. + + + + + An interface that determines when to intercept instances + and which interceptor to use. + + + + + Interceptor to use. + + Context for current build operation. + + + + Construct a new that + will resolve the interceptor using the given build key. + + build key to resolve. + + + + Interceptor to use. + + Context for current build operation. + + + + An implementation of that will + resolve the interceptor through the container. + + + + + Interface that controls when and how types get intercepted. + + + + + Interceptor to use to create type proxy + + Context for current build operation. + + + + Cache for proxied type. + + + + + construct a new that + will resolve the interceptor with the given . + + The build key to use to resolve. + + + + Interceptor to use to create type proxy + + Context for current build operation. + + + + Cache for proxied type. + + + + + High-level API for performing interception on existing and new objects. + + + + + Returns a for type which wraps + the supplied . + + The type to intercept. + The instance to intercept. + The to use when creating the proxy. + The interception behaviors for the new proxy. + Any additional interfaces the proxy must implement. + A proxy for compatible with . + when is . + when is . + when is . + when is . + when cannot intercept + . + + + + Returns a for type which wraps + the supplied . + + Type to intercept. + The instance to intercept. + The to use when creating the proxy. + The interception behaviors for the new proxy. + A proxy for compatible with . + when is . + when is . + when is . + when cannot intercept + . + + + + Returns a for type which wraps + the supplied . + + The type to intercept. + The instance to intercept. + The to use when creating the proxy. + The interception behaviors for the new proxy. + Any additional interfaces the proxy must implement. + A proxy for compatible with . + when is . + when is . + when is . + when is . + when is . + when cannot intercept + . + + + + Returns a for type which wraps + the supplied . + + The type to intercept. + The instance to intercept. + The to use when creating the proxy. + The interception behaviors for the new proxy. + A proxy for compatible with . + when is . + when is . + when is . + when is . + when cannot intercept + . + + + + Creates a new instance of type that is intercepted with the behaviors in + . + + The type of the object to create. + The to use when creating the proxy. + The interception behaviors for the new proxy. + Any additional interfaces the proxy must implement. + The arguments for the creation of the new instance. + An instance of a class compatible with that includes execution of the + given . + when is . + when is . + When is . + when cannot intercept + . + + + + Creates a new instance of type that is intercepted with the behaviors in + . + + The type of the object to create. + The to use when creating the proxy. + The interception behaviors for the new proxy. + The arguments for the creation of the new instance. + An instance of a class compatible with that includes execution of the + given . + when is . + when is . + when cannot intercept + . + + + + Creates a new instance of type that is intercepted with the behaviors in + . + + The type of the object to create. + The to use when creating the proxy. + The interception behaviors for the new proxy. + Any additional interfaces the instance must implement. + The arguments for the creation of the new instance. + An instance of a class compatible with that includes execution of the + given . + when is . + when is . + when is . + when is . + when cannot intercept + . + + + + Creates a new instance of type that is intercepted with the behaviors in + . + + The type of the object to create. + The to use when creating the proxy. + The interception behaviors for the new proxy. + The arguments for the creation of the new instance. + An instance of a class compatible with that includes execution of the + given . + when is . + when is . + when is . + when cannot intercept + . + + + + Computes the array with all the additional interfaces for the interception of an object. + + The interception behaviors for the new proxy. + Any additional interfaces the instance must implement. + An array with the required interfaces for + when the interfaces are not valid. + + + + Stores information about the to be used to intercept an object and + configures a container accordingly. + + + + + + Initializes a new instance of the class with an interceptor instance. + + The to use. + when is + . + + + + Initialize a new instance of the class with a given + name and type that will be resolved to provide interception. + + Type of the interceptor + name to use to resolve. + + + + Initialize a new instance of the class with + a given type that will be resolved to provide interception. + + Type of the interceptor. + + + + Add policies to the to configure the container to use the represented + for the supplied parameters. + + Interface being registered. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + Generic version of that lets you specify an interceptor + type using generic syntax. + + Type of interceptor + + + + Initialize an instance of that will + resolve the given interceptor type. + + + + + Initialize an instance of that will + resolve the given interceptor type and name. + + Name that will be used to resolve the interceptor. + + + + A simple data holder class used to store information about the current + interception operation that's being set up. Useful for creating behaviors + that need to know this stuff (especially the PIAB behavior). + + + + + Create a new instance of that + stores the given , + , and . + + that will be used to + create the intercepting type or proxy. + Type that interception was requested on. + Type of the object that will actually be intercepted. + + + + that will be used to + create the intercepting type or proxy. + + + + + Type that interception was requested on. + + + + + Type of the object that will actually be intercepted. + + + + + This interface is implemented by all proxy objects, type or instance based. + It allows for adding interception behaviors. + + + + + Adds a to the proxy. + + The to add. + + + + Base interface for type and instance based interceptor classes. + + + + + Can this interceptor generate a proxy for the given type? + + Type to check. + True if interception is possible, false if not. + + + + Returns a sequence of methods on the given type that can be + intercepted. + + Type that was specified when this interceptor + was created (typically an interface). + The concrete type of the implementing object. + Sequence of objects. + + + + Interface for interceptors that generate separate proxy + objects to implement interception on instances. + + + + + Create a proxy object that provides interception for . + + Type to generate the proxy of. + Object to create the proxy for. + Additional interfaces the proxy must implement. + The proxy object. + + + + Implementation of that returns a + pre-created interceptor. + + + + + Create a new instance of . + + Interceptor to store. + + + + Interceptor to use. + + Context for current build operation. + + + + A that intercepts objects + in the build chain by creating a proxy object. + + + + + Called during the chain of responsibility for a build operation. The + PostBuildUp method is called when the chain has finished the PreBuildUp + phase and executes in reverse order from the PreBuildUp calls. + + Context of the build operation. + + + + An instance interceptor that works by generating a + proxy class on the fly for a single interface. + + + + + Can this interceptor generate a proxy for the given type? + + Type to check. + True if interception is possible, false if not. + + + + Returns a sequence of methods on the given type that can be + intercepted. + + Type that was specified when this interceptor + was created (typically an interface). + The concrete type of the implementing object. + Sequence of objects. + + + + Create a proxy object that provides interception for . + + Type to generate the proxy of. + Object to create the proxy for. + Additional interfaces the proxy must implement. + The proxy object. + + + + A class used to generate proxy classes for doing interception on + interfaces. + + + + + Create an instance of that + can construct an intercepting proxy for the given interface. + + Type of the interface to intercept. + Additional interfaces the proxy must implement. + + + + Create the type to proxy the requested interface + + + + + + Represents the implementation of an interface method. + + + + + Used to throw an for non-implemented methods on the + additional interfaces. + + + + + This class provides the remoting-based interception mechanism. It is + invoked by a call on the corresponding TransparentProxy + object. It routes calls through the handlers as appropriate. + + + + + Creates a new instance that applies + the given policies to the given target object. + + Target object to intercept calls to. + Type to return as the type being proxied. + Additional interfaces the proxy must implement. + + + + Adds a to the proxy. + + The to add. + + + + Checks whether the proxy that represents the specified object type can be cast to the type represented by the interface. + + + + true if cast will succeed; otherwise, false. + + + The type to cast to. + The object for which to check casting. + The immediate caller makes the call through a reference to the interface and does not have infrastructure permission. + + + + Executes a method call represented by the + parameter. The CLR will call this method when a method is called + on the TransparentProxy. This method runs the invocation through + the call handler pipeline and finally sends it down to the + target object, and then back through the pipeline. + + An object that contains the information + about the method call. + An object contains the + information about the target method's return value. + + + + Returns the target of this intercepted call. + + The target object. + + + + Gets or sets the fully qualified type name of the server object in a . + + + + The fully qualified type name of the server object in a . + + + The immediate caller makes the call through a reference to the interface and does not have infrastructure permission. + + + + An instance interceptor that uses remoting proxies to do the + interception. + + + + + Can this interceptor generate a proxy for the given type? + + Type to check. + True if interception is possible, false if not. + + + + Returns a sequence of methods on the given type that can be + intercepted. + + The intercepted type. + The concrete type of the implementing object. + Sequence of objects. + + + + Create a proxy object that provides interception for . + + Type to generate the proxy of. + Object to create the proxy for. + Additional interfaces the proxy must implement. + The proxy object. + + + + A dumb data holder that returns the methodinfo for both an + interface method and the method that implements that interface + method. + + + + + Construct a new which holds + the given objects. + + MethodInfo for the interface method (may be null if no interface). + MethodInfo for implementing method. + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + + The to compare with the current . + + + The parameter is null. + 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Standard equals operator + + + + + standard not equal operator. + + + + + Returns a that represents the current . + + + A that represents the current . + + 2 + + + + The interface method MethodInfo. + + + + + The implementing method MethodInfo. + + + + + Interface for interceptor objects that generate + proxy types. + + + + + Create a type to proxy for the given type . + + Type to proxy. + Additional interfaces the proxy must implement. + New type that can be instantiated instead of the + original type t, and supports interception. + + + + Implementation of that returns a precreated + interceptor object. + + + + + Create a new instance of that + uses the given . + + Interceptor to use. + + + + Interceptor to use to create type proxy + + Context for current build operation. + + + + Cache for proxied type. + + + + + A that hooks up type interception. It looks for + a for the current build key, or the current + build type. If present, it substitutes types so that that proxy class gets + built up instead. On the way back, it hooks up the appropriate handlers. + + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + In this class, PreBuildUp is responsible for figuring out if the + class is proxiable, and if so, replacing it with a proxy class. + Context of the build operation. + + + + Called during the chain of responsibility for a build operation. The + PostBuildUp method is called when the chain has finished the PreBuildUp + phase and executes in reverse order from the PreBuildUp calls. + + In this class, PostBuildUp checks to see if the object was proxyable, + and if it was, wires up the handlers. + Context of the build operation. + + + + This class provides the code needed to implement the + interface on a class. + + + + + This class handles parameter type mapping. When we generate + a generic method, we need to make sure our parameter type + objects line up with the generic parameters on the generated + method, not on the one we're overriding. + + + + + A utility class that takes a set of s + and pulls out shadowed methods, only returning the ones that + are actually accessible to be overriden. + + + + + Take the list of methods and put them together into lists index by method name. + + Methods to sort through. + + + + Given a list of overloads for a method, return only those methods + that are actually visible. In other words, if there's a "new SomeType" method + somewhere, return only the new one, not the one from the base class + that's now hidden. + + Sequence of methods to process. + Sequence of returned methods. + + + + Take a semi-randomly ordered set of methods on a type and + sort them into groups by name and by parameter list. + + The list of methods. + Sequence of lists of methods, grouped by method name. + + + + Given a set of hiding overloads, return only the currently visible one. + + The set of overloads. + The most visible one. + + + + Given a method, return a value indicating how deeply in the + inheritance hierarchy the method is declared. Current type = 0, + parent = 1, grandparent = 2, etc. + + Method to check. + Declaration depth + + + + A implementation that can compare two + based on their parameter lists. + + First to compare. + Second to compare. + < 0, 0, or > 0 based on which one is "greater" than the other. + + + + Compare two parameter lists. + + First parameter list. + Second parameter list. + < 0, 0, or > 0. + + + + Compare two objects by type. + + First + First + < 0, 0, or > 0 + + + + A type based interceptor that works by generated a new class + on the fly that derives from the target class. + + + + + Can this interceptor generate a proxy for the given type? + + Type to check. + True if interception is possible, false if not. + + + + Returns a sequence of methods on the given type that can be + intercepted. + + The intercepted type. + The concrete type of the implementing object. + Sequence of objects. + + + + Create a type to proxy for the given type . + + Type to proxy. + Additional interfaces the proxy must implement. + New type that can be instantiated instead of the + original type t, and supports interception. + + + + An that returns a sequence of + instances for an intercepted object. + + + + + Get the set of object to be used for the given type and + interceptor. + + + This method will return a sequence of s. These behaviors will + only be included if their properties are true. + + Context for the current build operation. + Interceptor that will be used to invoke the behavior. + Type that interception was requested on. + Type that implements the interception. + + + + + Get the set of that can be used to resolve the + behaviors. + + + + + Key for handler pipelines. + + + + + Creates a new for the supplied method. + + The method for the key. + The new key. + + + + Compare two instances. + + Object to compare to. + True if the two keys are equal, false if not. + + + + Calculate a hash code for this instance. + + A hash code. + + + + Compare two instances for equality. + + First of the two keys to compare. + Second of the two keys to compare. + True if the values of the keys are the same, else false. + + + + Compare two instances for inequality. + + First of the two keys to compare. + Second of the two keys to compare. + false if the values of the keys are the same, else true. + + + + Compare two instances. + + Object to compare to. + True if the two keys are equal, false if not. + + + + A collection of objects, indexed + by . Returns an empty pipeline if a + MethodBase is requested that isn't in the dictionary. + + + + + Retrieve the pipeline assocated with the requested . + + The method for which the pipeline is being requested. + The handler pipeline for the given method. If no pipeline has + been set, returns a new empty pipeline. + + + + Set a new pipeline for a method. + + The method on which the pipeline should be set. + The new pipeline. + + + + Get the pipeline for the given method, creating it if necessary. + + Method to retrieve the pipeline for. + Handlers to initialize the pipeline with + True if the pipeline has any handlers in it, false if not. + + + + Attribute used to indicate that no interception should be applied to + the attribute target. + + + + + A class that reads and constructs handlers + based on on the target. + + + + + Base class for Policies that specifies which handlers apply to which methods of an object. + + + This base class always enforces the + before + passing the checks onto derived classes. This way, derived classes do not need to + worry about implementing this check. + It also means that derived classes cannot override this rule. This is considered a feature. + + + + Creates a new empty Policy. + + + + + Creates a new empty policy with the given name. + + Name of the policy. + + + + Checks if the rules in this policy match the given member info. + + MemberInfo to check against. + true if ruleset matches, false if it does not. + + + + Returns ordered collection of handlers in order that apply to the given member. + + Member that may or may not be assigned handlers by this policy. + The to use when creating handlers, + if necessary. + Collection of handlers (possibly empty) that apply to this member. + + + + Given a method on an object, return the set of MethodBases for that method, + plus any inteface methods that the member implements. + + Member to get Method Set for. + The set of methods + + + + Derived classes implement this method to calculate if the policy + will provide any handler to the specified member. + + Member to check. + true if policy applies to this member, false if not. + + + + Derived classes implement this method to supply the list of handlers for + this specific member. + + Member to get handlers for. + The to use when creating handlers, + if necessary. + Enumerable collection of handlers for this method. + + + + Gets the name of this policy. + + The name of the policy. + + + + Constructs a new instance of the . + + + + + Derived classes implement this method to calculate if the policy + will provide any handler to the specified member. + + Member to check. + true if policy applies to this member, false if not. + + + + Derived classes implement this method to supply the list of handlers for + this specific member. + + Member to get handlers for. + The to use when creating handlers, + if necessary. + Enumerable collection of handlers for this method. + + + + Base class for handler attributes used in the attribute-driven + interception policy. + + + + + Derived classes implement this method. When called, it + creates a new call handler as specified in the attribute + configuration. + + The to use when creating handlers, + if necessary. + A new call handler object. + + + + Gets or sets the order in which the handler will be executed. + + + + + The HandlerPipeline class encapsulates a list of s + and manages calling them in the proper order with the right inputs. + + + + + Creates a new with an empty pipeline. + + + + + Creates a new with the given collection + of s. + + Collection of handlers to add to the pipeline. + + + + Execute the pipeline with the given input. + + Input to the method call. + The ultimate target of the call. + Return value from the pipeline. + + + + Get the number of handlers in this pipeline. + + + + + Handlers implement this interface and are called for each + invocation of the pipelines that they're included in. + + + + + Implement this method to execute your handler processing. + + Inputs to the current call to the target. + Delegate to execute to get the next delegate in the handler + chain. + Return value from the target. + + + + Order in which the handler will be executed + + + + + This delegate type is the type that points to the next + method to execute in the current pipeline. + + Inputs to the current method call. + Delegate to get the next handler in the chain. + Return from the next method in the chain. + + + + This delegate type is passed to each handler's Invoke method. + Call the delegate to get the next delegate to call to continue + the chain. + + Next delegate in the handler chain to call. + + + + This interface is implemented by the matching rule classes. + A Matching rule is used to see if a particular policy should + be applied to a class member. + + + + + Tests to see if this rule applies to the given member. + + Member to test. + true if the rule applies, false if it doesn't. + + + + This interface is used to represent the call to a method. + An implementation of IMethodInvocation is passed to the + call handlers so that they may manipulate the call + (typically by changing the parameters) before the final target + gets called. + + + + + Factory method that creates the correct implementation of + IMethodReturn. + + Return value to be placed in the IMethodReturn object. + All arguments passed or returned as out/byref to the method. + Note that this is the entire argument list, including in parameters. + New IMethodReturn object. + + + + Factory method that creates the correct implementation of + IMethodReturn in the presence of an exception. + + Exception to be set into the returned object. + New IMethodReturn object + + + + Gets the inputs for this call. + + + + + Collection of all parameters to the call: in, out and byref. + + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + + + + The object that the call is made on. + + + + + The method on Target that we're aiming at. + + + + + This interface is used to represent the return value from a method. + An implementation of IMethodReturn is returned by call handlers, and + each handler can manipulate the parameters, return value, or add an + exception on the way out. + + + + + The collection of output parameters. If the method has no output + parameters, this is a zero-length list (never null). + + + + + Returns value from the method call. + + This value is null if the method has no return value. + + + + If the method threw an exception, the exception object is here. + + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + This is guaranteed to be the same dictionary that was used + in the IMethodInvocation object, so handlers can set context + properties in the pre-call phase and retrieve them in the after-call phase. + + + + + A Unity container extension that allows you to configure + whether an object should be intercepted and which mechanism should + be used to do it, and also provides a convenient set of methods for + configuring injection for instances. + + + + + + + + + + Initial the container with this extension's functionality. + + + + + API to configure interception for a type. + + Type to intercept. + Name type is registered under. + Interceptor to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept. + Interceptor to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept + Name type is registered under. + Interceptor object to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept + Interceptor object to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept. + Name type is registered under. + Instance interceptor to use. + This extension object. + + + + Set the interceptor for a type, regardless of what name is used to resolve the instances. + + Type to intercept + Interceptor instance. + This extension object. + + + + Set the interceptor for a type, regardless of what name is used to resolve the instances. + + Type to intercept + Interceptor instance. + This extension object. + + + + API to configure interception for a type. + + Type to intercept. + Instance interceptor to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept. + Name type is registered under. + Instance interceptor to use. + This extension object. + + + + API to configure interception for a type. + + Type to intercept. + Instance interceptor to use. + This extension object. + + + + API to configure the default interception settings for a type. + + Type the interception is being configured for. + The interceptor to use by default. + This extension object. + + + + API to configure the default interception settings for a type. + + Type the interception is being configured for. + The interceptor to use by default. + This extension object. + + + + Starts the definition of a new . + + The policy name. + + This is a convenient way for defining a new policy and the + instances and instances that are required by a policy. + + This mechanism is just a shortcut for what can be natively expressed by wiring up together objects + with repeated calls to the method. + + + + + This interface represents a list of either input or output + parameters. It implements a fixed size list, plus a couple + of other utility methods. + + + + + Gets the name of a parameter based on index. + + Index of parameter to get the name for. + Name of the requested parameter. + + + + Gets the ParameterInfo for a particular parameter by index. + + Index for this parameter. + ParameterInfo object describing the parameter. + + + + Gets the ParameterInfo for a particular parameter by name. + + Name of the parameter. + ParameterInfo object for the named parameter. + + + + Fetches a parameter's value by name. + + parameter name. + value of the named parameter. + + + + A is a matching rule that + is a collection of other matching rules. All the contained + rules much match for the set to match. + + + + + Tests the given member against the ruleset. The member matches + if all contained rules in the ruleset match against it. + + If the ruleset is empty, then Matches passes since no rules failed. + MemberInfo to test. + true if all contained rules match, false if any fail. + + + + A implementation that fails to match + if the method in question has the ApplyNoPolicies attribute on it. + + + + + Check if the matches this rule. + + This rule returns true if the member does NOT have the + on it, or a containing type doesn't have the attribute. + Member to check. + True if the rule matches, false if it doesn't. + + + + An that matches the assembly name of the + given member. + + + + + Constructs a new with the given + assembly name (or partial name). + + Assembly name to match. + + + + Constructs a new that matches + against the given assembly. + + Assembly to match. + + + + Determines if the supplied matches the rule. + + + This rule matches if the assembly containing the given + matches the name given. The rule used for matches lets you include the parts + of the assembly name in order. You can specify assembly name only, assembly and version, + assembly, version and culture, or the fully qualified assembly name. + + Member to check. + true if is in a matching assembly, false if not. + + + + An implementation of that checks to see if the + member (or type containing that member) have any s. + + + + + Checks to see if matches the rule. + + Returns true if any s are present on the method + or the type containing that method. + Member to check. + true if member matches, false if not. + + + + An implementation of that checks to see if + the member tested has an arbitrary attribute applied. + + + + + Constructs a new . + + Attribute to match. + If true, checks the base class for attributes as well. + + + + Checks to see if the given matches the rule. + + Member to check. + true if it matches, false if not. + + + + Class used for storing information about a single name/ignoreCase + pair. This class is also used as a base class for other classes that + need this pair plus some other properties. + + + + + Constructs an empty object with empty + string and ignoreCase = false. + + + + + Constructs a object that matches the given + string. IgnoreCase is false. + + The name to match. + + + + Constructs a object that matches the + given string, setting the ignoreCase flag to the given value. + + The name to match. + true to do case insensitive comparison, false to do case sensitive. + + + + Gets or sets the name to match. + + The name to match. + + + + Gets or sets whether to do case sensitive comparisons of Match. + + If false, case sensitive comparison. If true, case insensitive comparisons. + + + + A matching rule that matches when the given member name is + the same as the one supplied in the constructor. + + + + + Create a new that matches the + given member name. Wildcards are allowed. + + Name to match against. Comparison is case sensitive. + + + + Create a new that matches the + given member name. Wildcards are allowed. + + Name to match against. + If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. + + + + Create a new that matches the + given member names. Wildcards are allowed. + + collections of names to match. If any of these patterns match, the rule matches. Comparisons are case sensitive. + + + + Create a new that matches the + given member names. Wildcards are allowed. + + Collections of names to match. If any of these patterns match, the rule matches. + If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. + + + + Create a new that matches + one of the given member names. Wildcards are allowed. + + List of objects containing + the pattern to match and case sensitivity flag. + + + + Check if the given matches one of this + object's matching patterns. + + Member to check. + True if matches, false if not. + + + + Match methods with the given names and method signature. + + + + + Creates a new that matches methods + with the given name, with parameter types matching the given list. + + Method name to match. Wildcards are allowed. + Parameter type names to match, in order. Wildcards are allowed. + If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. + + + + Create a new that matches methods + with the given name, with parameter types matching the given list. + + Name comparisons are case sensitive. + Method name to match. Wildcards are allowed. + Parameter type names to match, in order. Wildcards are allowed. + + + + Create a new that matches any method + with parameter types matching the given list. + + Name comparisons are case sensitive. + Parameter type names to match, in order. Wildcards are allowed. + + + + Create a new that matches any method + with parameter types matching the given list. + + Parameter type names to match, in order. Wildcards are allowed. + If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. + + + + Check to see if the given method matches the name and signature. + + Member to check. + True if match, false if not. + + + + An that matches members in a given namespace. You can + specify either a single namespace (e.g. System.Data) or a namespace root + (e.g. System.Data.* to match types in that namespace or below. + + + + + Create a new that matches the given + namespace. + + namespace name to match. Comparison is case sensitive. + + + + Create a new that matches the given + namespace. + + namespace name to match. + If false, comparison is case sensitive. If true, comparison is case insensitive. + + + + Create a new that matches any of + the given namespace names. + + Collection of namespace names to match. + + + + Check to see if the given is in a namespace + matched by any of our given namespace names. + + member to check. + True if member is contained in a matching namespace, false if not. + + + + A helper class that encapsulates the name to match, case sensitivity flag, + and the wildcard rules for matching namespaces. + + + + + Construct a new that matches the + given namespace name. + + Namespace name to match. + If false, comparison is case sensitive. If true, comparison is case insensitive. + + + + Check if the given type is in a matching namespace. + + Type to check. + True if type is in a matching namespace, false if not. + + + + An that matches methods that have any parameters + of the given types. + + + + + Creates a new that matches if any of + the method parameters match ones in the given collection. + + Collection of that + describes the types to match. + + + + Check the given member to see if it has any matching parameters. + + Member to match. + true if member matches, false if it doesn't. + + + + The list of describing the parameter types to match. + + The collection of matches. + + + + Describes the type of parameter to match. + + + + + Input parameter + + + + + Output parameter + + + + + Input or output parameter + + + + + Method return value + + + + + A class that stores information about a single type to match. + + + + + Creates a new uninitialized . + + + + + Creates a new matching the given kind of parameter. + + of parameter to match. + + + + Creates a new matching the given parameter + type and kind. + + Parameter name to match. + of parameter to match. + + + + Creates a new matching the given parameter + type and kind. + + Parameter name to match. + If false, compare type names using case-sensitive comparison. + If true, compare type names using case-insensitive comparison. + of parameter to match. + + + + What kind of parameter to match. + + indicating which kind of parameters to match. + + + + An implementation that matches properties + by name. You can match the getter, setter, or both. + + + + + Construct a new that matches the + getter or setter of the given property. + + Name of the property. Name comparison is case sensitive. Wildcards are allowed. + + + + Constructs a new that matches the + given method of the given property. + + Name of the property. Name comparison is case sensitive. Wildcards are allowed. + Match the getter, setter, or both. + + + + Constructs a new that matches the + given method of the given property. + + Name of the property to match. Wildcards are allowed. + Match the getter, setter, or both. + If false, name comparison is case sensitive. If true, name comparison is case insensitive. + + + + Constructs a new that matches any of the + given properties. + + Collection of defining which + properties to match. + + + + Checks if the given member matches the rule. + + Member to check. + True if it matches, false if it does not. + + + + Specifies which methods of a property should be matches by + the . + + + + + Match the property getter method. + + + + + Match the property setter method. + + + + + Match either the getter or setter method. + + + + + Information about a property match. + + + + + Construct a new that matches the get or set methods + of the given property name, and does a case-sensitive comparison. + + Property name to match. + + + + Constructs a new that matches the given methods of + the given property name, doing a case-sensitive comparison. + + Property name to match. + specifying which methods of the property to match. + + + + Construt a new that matches the given methods of + the given property name. + + Property name to match. + specifying which methods of the property to match. + If false, name comparison is case sensitive. If true, name comparison is case insensitive. + + + + The to use when doing name comparisons on this property. + + Specifies which methods of the property to match. + + + + An that checks to see if a member has a specified + type. + + + + + Construct a new that matches + members with the given return type. + + Type to look for. + + + + Construct a new that matches + the given return type by name. + + See the class for details on how + type name matches are done. + Type name to match. Name comparisons are case sensitive. + + + + Construct a new that matches + the given return type by name. + + See the class for details on how + type name matches are done. + Type name to match. + If false, name comparison is case sensitive. If true, comparison + is case insensitive. + + + + Check to see if the given member has a matching return type. + + Member to check. + true if return types match, false if they don't. + + + + A that checks a member for the presence + of the on the method, property, or class, and + that the given string matches. + + + + + Constructs a new , looking for + the given string. The comparison is case sensitive. + + tag string to match. + + + + Constructs a new , looking for + the given string. The comparison is case sensitive if is + false, case insensitive if is true. + + tag string to match. + if false, case-senstive comparison. If true, case-insensitive comparison. + + + + Check the given member for the presence of the and + match the strings. + + Member to check. + True if tag strings match, false if they don't. + + + + A matching rule that matches when the member is declared + in the given type. + + + + + Constructs a new that matches the + given type. + + The type to match. + + + + Constructs a new that matches types + with the given name. + + Comparisons are case sensitive. + Type name to match. + + + + Constructs a new that matches types + with the given name, using the given case sensitivity. + + Type name to match. + if false, do case-sensitive comparison. If true, do case-insensitive. + + + + Constructs a new that will match + any of the type names given in the collection of match information. + + The match information to match. + + + + Checks if the given member matches any of this object's matches. + + Member to match. + True if match, false if not. + + + + Checks if the given type matches any of this object's matches. + + Matches may be on the namespace-qualified type name or just the type name. + Type to check. + True if it matches, false if it doesn't. + + + + An implementation of that wraps a provided array + containing the argument values. + + + + + Construct a new that wraps the + given array of arguments. + + Complete collection of arguments. + Type information about about each parameter. + A that indicates + whether a particular parameter is part of the collection. Used to filter out only input + parameters, for example. + + + + Gets the ParameterInfo for a particular parameter by index. + + Index for this parameter. + ParameterInfo object describing the parameter. + + + + Gets the for the given named parameter. + + Name of parameter. + for the requested parameter. + + + + Gets the name of a parameter based on index. + + Index of parameter to get the name for. + Name of the requested parameter. + + + + Adds to the collection. This is a read only collection, so this method + always throws . + + Object to add. + Nothing, always throws. + Always throws this. + + + + Checks to see if the collection contains the given object. + + Tests for the object using object.Equals. + Object to find. + true if object is in collection, false if it is not. + + + + Remove all items in the collection. This collection is fixed-size, so this + method always throws . + + This is always thrown. + + + + Returns the index of the given object, or -1 if not found. + + Object to find. + zero-based index of found object, or -1 if not found. + + + + Inserts a new item. This is a fixed-size collection, so this method throws . + + Index to insert at. + Always throws. + Always throws this. + + + + Removes the given item. This is a fixed-size collection, so this method throws . + + Always throws. + Always throws this. + + + + Removes the given item. This is a fixed-size collection, so this method throws . + + Always throws. + Always throws this. + + + + Copies the contents of this collection to the given array. + + Destination array. + index to start copying from. + + + + Gets an enumerator object to support the foreach construct. + + Enumerator object. + + + + Fetches a parameter's value by name. + + parameter name. + value of the named parameter. + + + + Gets the value of a parameter based on index. + + Index of parameter to get the value for. + Value of the requested parameter. + + + + Is this collection read only? + + No, it is not read only, the contents can change. + + + + Is this collection fixed size? + + Yes, it is. + + + + Total number of items in the collection. + + The count. + + + + Gets a synchronized version of this collection. WARNING: Not implemented completely, + DO NOT USE THIS METHOD. + + + + + Is the object synchronized for thread safety? + + No, it isn't. + + + + An internal struct that maps the index in the arguments collection to the + corresponding about that argument. + + + + + Construct a new object linking the + given index and object. + + Index into arguments array (zero-based). + for the argument at . + + + + Transient class that supports convenience method for specifying interception policies. + + + + + Adds a reference to matching rule by name. + + The name for the matching rule. + + The than allows further configuration of the policy. + + + The details of how the rule should be created by the container must be specified using a + standard injection specification mechanism. + + + + + Makes a matching rule in the current policy. + + The new for the policy. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a matching rule in the current policy. + + The type for the new matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a matching rule in the current policy, using the given . + + The type for the new matching rule. + The that controls the lifetime + of the configured matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a matching rule in the current policy. + + The type for the new matching rule. + The name for the injection configuration for the matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a matching rule in the current policy, using the given . + + The type for the new matching rule. + The name for the injection configuration for the matching rule. + The that controls the lifetime + of the configured matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a matching rule in the current policy. + + The type for the new matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a matching rule in the current policy, using the given . + + The type for the new matching rule. + The that controls the lifetime + of the configured matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a matching rule in the current policy. + + The type for the new matching rule. + The name for the injection configuration for the matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a matching rule in the current policy, + using the given . + + The type for the new matching rule. + The name for the injection configuration for the matching rule. + The that controls the lifetime + of the configured matching rule. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Adds a reference to call handler by name. + + The name for the call handler. + + The than allows further configuration of the policy. + + + The details of how the handler should be created by the container must be specified using a + standard injection specification mechanism. + + + + + Makes a call handler in the current policy. + + The new for the policy. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a call handler in the current policy. + + The type for the new call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a call handler in the current policy, using the given . + + The type for the new call handler. + The that controls the lifetime + of the configured call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a call handler in the current policy. + + The type for the new call handler. + The name for the injection configuration for the call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a call handler in the current policy, + using the given . + + The type for the new call handler. + The name for the injection configuration for the call handler. + The that controls the lifetime + of the configured call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a call handler in the current policy. + + The type for the new call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new and makes it available + as a call handler in the current policy, using the given . + + The type for the new call handler. + The that controls the lifetime + of the configured call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a call handler in the current policy. + + The type for the new call handler. + The name for the injection configuration for the call handler . + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + Configures injection for a new using the specified name + and makes it available as a call handler in the current policy, + using the given . + + The type for the new call handler. + The name for the injection configuration for the call handler . + The that controls the lifetime + of the configured call handler. + Objects containing the details on which members to inject and how. + + The than allows further configuration of the policy. + + + + + The that is currently being + configured. + + + + + The extension to which the policy was added. + + + Use this property to start adding a new policy. + + + + + A collection of Policy objects. The policies within a PolicySet combine using + an "or" operation. + + + + + Creates a new containing the given policies. + + Policies to put into the policy set. + + + + Gets the policies that apply to the given member. + + Member to get policies for. + Collection of policies that apply to this member. + + + + Gets the policies in the that do not + apply to the given member. + + Member to check. + Collection of policies that do not apply to . + + + + Gets the handlers that apply to the given member based on all policies in the . + + Member to get handlers for. + The to use when creating handlers, + if necessary. + Collection of call handlers for . + + + + Interceptor that performs policy injection. + + + + + Interception behaviors implement this interface and are called for each + invocation of the pipelines that they're included in. + + + + + Implement this method to execute your behavior processing. + + Inputs to the current call to the target. + Delegate to execute to get the next delegate in the behavior chain. + Return value from the target. + + + + Returns the interfaces required by the behavior for the objects it intercepts. + + The required interfaces. + + + + Returns a flag indicating if this behavior will actually do anything when invoked. + + This is used to optimize interception. If the behaviors won't actually + do anything (for example, PIAB where no policies match) then the interception + mechanism can be skipped completely. + + + + Initializes a new instance of the with a pipeline manager. + + The for the new instance. + + + + Initializes a new instance of the with the given information + about what's being intercepted and the current set of injection policies. + + Information about what will be injected. + Current injection policies. + Unity container that can be used to resolve call handlers. + + + + Applies the policy injection handlers configured for the invoked method. + + Inputs to the current call to the target. + Delegate to execute to get the next delegate in the handler + chain. + Return value from the target. + + + + Returns the interfaces required by the behavior for the objects it intercepts. + + An empty array of interfaces. + + + + Returns a flag indicating if this behavior will actually do anything when invoked. + + This is used to optimize interception. If the behaviors won't actually + do anything (for example, PIAB where no policies match) then the interception + mechanism can be skipped completely. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Intercepted abstract method was invoked.. + + + + + Looks up a localized string similar to Additional interfaces do not have an implementation.. + + + + + Looks up a localized string similar to The additional interfaces supplied are invalid: {0}. + + + + + Looks up a localized string similar to Type must be a subclass of System.Attribute.. + + + + + Looks up a localized string similar to Could not create instance of type {0} with no constructor arguments.. + + + + + Looks up a localized string similar to Collection contains a null element.. + + + + + Looks up a localized string similar to The collection of interfaces is null.. + + + + + Looks up a localized string similar to The required interfaces for behavior {1} are invalid: {0}. + + + + + Looks up a localized string similar to The type {0} is not an interface.. + + + + + Looks up a localized string similar to Null type.. + + + + + Looks up a localized string similar to The type {0} is an open generic.. + + + + + Looks up a localized string similar to The type {0} is not interceptable.. + + + + + Looks up a localized string similar to Could not find the implementation of interface method {0}.{1} in type {2}. + + + + + Looks up a localized string similar to Null is not permitted as an interception behavior.. + + + + + A class that wraps the inputs of a into the + interface. + + + + + Constructs a new that wraps the + given method call and arguments. + + The call message. + The arguments. + + + + An implementation of that wraps the + remoting-based in the PIAB call + interface. + + + + + Creates a new implementation that wraps + the given , with the given ultimate + target object. + + Remoting call message object. + Ultimate target of the method call. + + + + Factory method that creates the correct implementation of + IMethodReturn. + + In this implementation we create an instance of . + Return value to be placed in the IMethodReturn object. + All arguments passed or returned as out/byref to the method. + Note that this is the entire argument list, including in parameters. + New IMethodReturn object. + + + + Factory method that creates the correct implementation of + IMethodReturn in the presence of an exception. + + Exception to be set into the returned object. + New IMethodReturn object + + + + Gets the inputs for this call. + + The input collection. + + + + Collection of all parameters to the call: in, out and byref. + + The arguments collection. + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + The invocation context dictionary. + + + + The object that the call is made on. + + The target object. + + + + The method on Target that we're aiming at. + + The target method base. + + + + Gets the collection of arguments being passed to the target. + + This method exists becuase the underlying remoting call message + does not let handlers change the arguments. + Array containing the arguments to the target. + + + + An implementation of that wraps the + remoting call and return messages. + + + + + Creates a new object that contains a + return value. + + The original call message that invoked the method. + Return value from the method. + Collections of arguments passed to the method (including the new + values of any out params). + Invocation context dictionary passed into the call. + + + + Creates a new object that contains an + exception thrown by the target. + + Exception that was thrown. + The original call message that invoked the method. + Invocation context dictionary passed into the call. + + + + Constructs a for the remoting + infrastructure based on the contents of this object. + + The instance. + + + + The collection of output parameters. If the method has no output + parameters, this is a zero-length list (never null). + + The output parameter collection. + + + + Return value from the method call. + + This value is null if the method has no return value. + The return value. + + + + If the method threw an exception, the exception object is here. + + The exception, or null if no exception was thrown. + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + This is guaranteed to be the same dictionary that was used + in the IMethodInvocation object, so handlers can set context + properties in the pre-call phase and retrieve them in the after-call phase. + + The invocation context dictionary. + + + + A class that wraps the outputs of a into the + interface. + + + + + Constructs a new that wraps the + given method call and arguments. + + The call message. + The arguments. + + + + A policy is a combination of a matching rule set and a set of handlers. + If the policy applies to a member, then the handlers will be enabled for + that member. + + + + + Creates a new object with a set of matching rules + and the names to use when resolving handlers. + + + + + Creates a new object with a name, a set of matching rules + and the names to use when resolving handlers. + + + + + Checks if the rules in this policy match the given member info. + + MemberInfo to check against. + true if ruleset matches, false if it does not. + + + + Return ordered collection of handlers in order that apply to the given member. + + Member that may or may not be assigned handlers by this policy. + The to use when creating handlers, + if necessary. + Collection of handlers (possibly empty) that apply to this member. + + + + A simple attribute used to "tag" classes, methods, or properties with a + string that can later be matched via the . + + + + + Creates a new with the given string. + + The tag string. + + + + The string tag for this attribute. + + the tag. + + + + Stores information about a single to be used on an intercepted object and + configures a container accordingly. + + + + + + Initializes a new instance of the with a + . + + The interception behavior to use. + + + + Initializes a new instance of the with a + given type/name pair. + + Type of behavior to + + + + + Initializes a new instance of the with a + given behavior type. + + Type of behavior to + + + + Get the list of behaviors for the current type so that it can be added to. + + Policy list. + Implementation type to set behaviors for. + Name type is registered under. + An instance of . + + + + A generic version of that lets you + specify behavior types using generic syntax. + + Type of behavior to register. + + + + Initializes a new instance of the with a + given behavior type. + + + + + Initializes a new instance of the with a + given type/name pair. + + Name to use to resolve the behavior. + + + + An that accumulates a sequence of + instances for an intercepted object. + + + + + Get the set of object to be used for the given type and + interceptor. + + + This method will return a sequence of s. These behaviors will + only be included if their properties are true. + + Context for the current build operation. + Interceptor that will be used to invoke the behavior. + Type that interception was requested on. + Type that implements the interception. + + + + + Get the set of that can be used to resolve the + behaviors. + + + + + The InterceptionBehaviorPipeline class encapsulates a list of s + and manages calling them in the proper order with the right inputs. + + + + + Creates a new with an empty pipeline. + + + + + Creates a new with the given collection + of s. + + Collection of interception behaviors to add to the pipeline. + + + + Execute the pipeline with the given input. + + Input to the method call. + The ultimate target of the call. + Return value from the pipeline. + + + + Adds a to the pipeline. + + The interception behavior to add. + + + + Get the number of interceptors in this pipeline. + + + + + This delegate type is the type that points to the next + method to execute in the current pipeline. + + Inputs to the current method call. + Delegate to get the next interceptor in the chain. + Return from the next method in the chain. + + + + This delegate type is passed to each interceptor's Invoke method. + Call the delegate to get the next delegate to call to continue + the chain. + + Next delegate in the interceptor chain to call. + + + + A "glob" is a string matching pattern. It is similar to the + matches available in the file system (*.cs, for example). The Glob + class implements this string matching. + + Glob supports the following metacharacters: + * - match zero or more characters + ? - match any one character + [abc] - match one character if it's in the characters inside the brackets. + All other characters in the glob are literals. + + + + + Constructs a new instance that matches the given pattern. + + + The pattern match is case sensitive by default. + + Pattern to use. See summary for + details of the pattern. + + + + Constructs a new instance that matches the given pattern. + + The pattern to use. See summary for + details of the patterns supported. + If true, perform a case sensitive match. + If false, perform a case insensitive comparison. + + + + Checks to see if the given string matches the pattern. + + String to check. + True if it matches, false if it doesn't. + + + + A collection of utility functions to encapsulate details of + reflection and finding attributes. + + + + + Given a MethodBase for a property's get or set method, + return the corresponding property info. + + MethodBase for the property's get or set method. + PropertyInfo for the property, or null if method is not part of a property. + + + + Given a MethodInfo for a property's get or set method, + return the corresponding property info. + + MethodBase for the property's get or set method. + PropertyInfo for the property, or null if method is not part of a property. + + + + Given a particular MemberInfo, return the custom attributes of the + given type on that member. + + Type of attribute to retrieve. + The member to look at. + True to include attributes inherited from base classes. + Array of found attributes. + + + + Given a particular MemberInfo, find all the attributes that apply to this + member. Specifically, it returns the attributes on the type, then (if it's a + property accessor) on the property, then on the member itself. + + Type of attribute to retrieve. + The member to look at. + true to include attributes inherited from base classes. + Array of found attributes. + + + + A small implementation of that returns the + given object. + + + + + Create a new instance. + + Information about which constructor to select. + + + + Choose the constructor to call for the given type. + + Current build context + The to add any + generated resolver objects into. + The chosen constructor. + + + + MethodInfo objects for the methods we need to generate + calls to on IMethodInvocation. + + + + + Class that handles generating the dynamic types used for interception. + + + + + Create a new that will generate a + wrapper class for the requested . + + Type to generate the wrapper for. + Additional interfaces the proxy must implement. + + + + Create the wrapper class for the given type. + + Wrapper type. + + + + Represents the implementation of a method override. + + + + + Used to throw an for overrides on abstract methods. + + + + + Implementation of used + by the virtual method interceptor. + + + + + Construct a new instance for the + given target object and method, passing the + to the target method. + + Object that is target of this invocation. + Method on to call. + Values for the parameters. + + + + Factory method that creates the correct implementation of + IMethodReturn. + + Return value to be placed in the IMethodReturn object. + All arguments passed or returned as out/byref to the method. + Note that this is the entire argument list, including in parameters. + New IMethodReturn object. + + + + Factory method that creates the correct implementation of + IMethodReturn in the presence of an exception. + + Exception to be set into the returned object. + New IMethodReturn object + + + + Gets the inputs for this call. + + + + + Collection of all parameters to the call: in, out and byref. + + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + + + + The object that the call is made on. + + + + + The method on Target that we're aiming at. + + + + + An implementation of used by + the virtual method interception mechanism. + + + + + Construct a instance that returns + a value. + + The method invocation. + Return value (should be null if method returns void). + All arguments (including current values) passed to the method. + + + + Construct a instance for when the target method throws an exception. + + The method invocation. + Exception that was thrown. + + + + The collection of output parameters. If the method has no output + parameters, this is a zero-length list (never null). + + + + + Returns value from the method call. + + This value is null if the method has no return value. + + + + If the method threw an exception, the exception object is here. + + + + + Retrieves a dictionary that can be used to store arbitrary additional + values. This allows the user to pass values between call handlers. + + This is guaranteed to be the same dictionary that was used + in the IMethodInvocation object, so handlers can set context + properties in the pre-call phase and retrieve them in the after-call phase. + + + + diff --git a/Lib/Unity/Microsoft.Practices.Unity.dll b/Lib/Unity/Microsoft.Practices.Unity.dll new file mode 100644 index 0000000000000000000000000000000000000000..84f1870df0ba2ff477d65a17a81191f4cbe476eb GIT binary patch literal 133944 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 =a6b1fTe|3ew zy1agxKU7m$7Y@`^=ZC|=z=FE4zx8KDVfAHx1Xfc$wx&814%U^2Yl7}`j_+iDcyUdI z>)}S{@``II9A9Nieyr3of3O&zV4%V;#@1BT)`S9Ke+xdBxsu$^OTDl2uu<_~G%;gA@+I8a%EMC-W52K~OUzhc}ne|0!NxG3c2%T!;` zSLF};gEM@Ub$&6y56uGQ4tI<%cAELil)+T)*%mrl-tcjCI>Y_ zwMYn8L#^D@N?)}JwZOj+HQHZcB4b@W-iBR@I#i2-s`jJg3@^X3GJ&z6KSf zB#c}rH+9$bqW0Okb&7b%skRiAe|gw0TpPNDGdU0n1*#W~TVC#GyCMov#TNN0oyMX~ zlIw4(i3!O`0n%pIXJ}Hs#BBy7$%aPQRnX-Wx|KnAoKxy5D?Lye{6m|A|2>ZbEZArc%iM!&>Q z_OiydC$0LB!9ykX_!s%B7ljv-K}T|fUZ2P?@swuxE3`SB83-?Ss%z-9o}OntF?-{J z)kgcM4x85HHrayuYF|~LTvr#*!)`8AFRNLCT=)37PZyfUP2rhPsJC#k3MRl;R~bG7 zL9Gb~MdiRH#&!i!b8GO1K@vJT5s?JvaZ_zbj=L{cA#aKu@kp6MlV}}-n_i92Ff)CX zl};`?M#iy~x+JJN8*{_mn;TU`s%)7Oe;9qO6DmPZ2=2qi2o<2#E6n9;VGo{_1?UbzEH zyQ12|`ljKauXb3-5T`eFYGNx|w9KXuBJ)&GP6aUwsH~@~YI$I2*DN#gvB%;L{-Od49305gMzb)RpUBjS49sW<5&#;*+AQhhFb3NS|7ngjH4q$YsqRv2-w-$ z#1Iu>;uG{$vO#R#vQ7JQ8cwSc5rsm%>9|Ti^??|{^U&Jv%xx%2YW?Mbg#kZJd|Jr{ zM@0A0w&D~0l`!mX06OI%+uNw@JZ#d9Hq=DIR@te9+5{}~S2!HIotF56%P`9=swwBu z=Y%?6u;Mi1%<17kC1%5}y+JPU1hQVYZZ=44!Z^yhASTeK3C>MH6RW{BoM#8d78F+1 zRz?_*G5*EAWr3QYV>D=-qKBGIE3nSSY5s*~vTCw??|HDWdSQ(y)peZQ9M5D7<1kqbh3#PlBzOwuMxYB!Kh1Ty$x2Hp*D%T{QR>ua zQED1yi}lT0&uJ><#Wg{yUDUCO((!>{C@e}#Fx9B85PHSJY1uh6b{Ey?eZ?YwxQuKE zw*)L$*hAu=D6ZyY(i9i@Q)AX*LL$GSfZ+d3AV&@?&OB85Y6F^`d6_I-VF{(k#$kUZbEWI;Sy^wp=~6Jqxk+ z$Yi@Jo35m^#(5$nJixVwPC$#AtjTfcfe;T4M9^6drRrBu(>x~bSSYa48tx+sL$<|h z>NC+7Vx>{kM#RyP+7D}vF3)W?LBAMZS6x1Ts92~M{0M2*U{PzYEE)@i_SP(;B2!CM zRF`gv?U?4TLOa&XK=pLk2@0c-T~vbFrKwq@5S2CMOE9K^n(p$R8?uM##8MipAGbUZ z7Rz`IRNHJn)|K?UYkDo#NJ4s{k=#LlsoxhYsJXnF`3^88EW*^399xM{ zU`2U>vk(*HATrS}m~Do1lp*w)Qe!iqG7KmTI1l+a77BZeA7$n=27d+D?iM|ATjDmW z?JWuE^%`UV6e539okXD-jzI(4C{lOl^f3{Z9IJwMLlCg@W`WAE;3@KXwH_vQJO&uP z^2Oq!ngFfnAoP%1rML+=6--x;S~CsTe%?7bXA^SA#OAteBV>=zOTFo$5;P-js`LbH z%g3NN7+4g*Ou(55l7s`Oayo!~F!~RnW5V#&X-CYa;Fg3fTax*xKG=ivMzs1+~DFHBPoP z%MvFCT1dT<4NkHm6VOc0a-Q5*npJ*SKJS`jP1DlAaK34N*V=gVTXw94>h?!HF`8{hG^(y+fOW)ih=+)M_;fW z!*x^%Erq5@osAcxis|*fKzUOyYE!Mr+J45KAz&Q?l&h)M8#&zJT<)u74+1dOh?$?9 z=C7@U&1AQJke%a}*7+*A3ZqBE$}RTeYHG`vOEW0A3#+jgguDhS@h$WtJVz1(-0~%` zKc;$7jK#cV5k{rQ2osrxB4F#!-9=d$^$2X_Xmsm13bA+TDNgD^ny@hD5!I$aQKnV+ zsi|}6a~{%!uml6$DRs2DR=m*k$@b!KUlKVqircE()Y z#s{k1tvhc39Jy`W|}=0GjWL4A9<5>5=avE)LdCt6V?V0%(Fd6q#q zIT~v#!AB`z@_kh_%+*zith>g@H*cPCmBgY$ehBjpq>8$0c8|pp@&Zck7_8z|8?kX@ zaj{$H7wFgQ-7ymb7y>q&&J0kW1SRc^uj0ciPHpCL(+a!1ra076JG0x578cwdw3}K4 z4I}M7-s^{+b4pEdU6@S~6r*lSKgB+n{TUxN0WEKHQ^jps4NGg9=%WMW#UiJO+!QV% zd+wbAKn9&*c`(5H>oD3?zOZvvfQz!lOwd)2Ol!mxqD5I~?cKg}Lg(HL@nd2VsGx&4 zc3AWP>KeY9r?!=dTa;}YF=mcvR~XFjF1OAojPSUs+C9DIdTIwcSUUA&9x^IY-HLq9 z)?L(^3=vDrLYL!1c~7RuVG!_4D+ubbr)k*15Cy`u7@Hro4~StMzDW=sw#A`E9T;am zC!_cBrung|hgASG(B;O7ahZY6R9vUPo|l+0C2481sEvvUfa0>Tk#EL99WrAuew@e6 zS}nAG42LMmm?2>e)95V52iz@WEol$tXkn4(t)Ar+`$(6wChc8~%x!4{Ct~Yna8A>+ zMR`q@FeyJBvyN#2M=0h5YR&3v2}Z@VZ)q>*n#I_rY-Eg%xWE_oaW6+lt1ukI!b3F% ztS+J~r@V^fP~&qsx~wMqLm}j$-PxAXx|;5nxr|Xkkh#X<75Fie#{gfqX>Q8SvidZ? zFGNF^h)5$NEH@pNGaPqM9C7B@cGdOg85C(0_63n7xAg7#GHN&N#rT8lRZ2azC@rmV z*!C_dt@1+(&DC!z%Q*Wi78cPRCp6$=Nf^i4P97}KQj3lUIj!@}%$)29>?&*@dV`_x z9=foHCj6{3*`iY7T&A-YrtXp*up^`F<4te9v!TZzwCwGxsBl)hVKFghqWNV6tBHuM zXA7c^7d_&vukv!MPHKhyP|KdDO93forv`2(s+L0vAwRfQg;9&REXjf5tTby6cJA8M zn`P)JDt-pG4<54la5~=P01i5(NeoQHVMplL06k)>>)Azc)FyuiI1bo;8p{}~Vpkl$ zv#*5af=bCTYo0q*Gtbb>4$p<`sbUp(5S$g-=}b4UwdnZqnlY*iJ#D%ayW`Vvtgm{E zQ3LhXGeE$gf@V@pSQrLko2m)Z7+xCp=nl=Pz2G=%aW=Z`*5Pydbcl8z#bZ!2T(NnD z*v<`ydAE+WbotP<5a*AV!wyCGaKMEjp8JLaG$3>=k!{gTv9M~;m6z=qP;XU1tH`iy zZrj)WB-UjdmY(P%Eht>m>LcqdTP##M(f>o&D$k>0N`T|KAQR0}T)m0xe-3zI?40#AXN z-aPAt0}uQgsItRa_al1J+UHSG!_ZH`XH;*fj8smK2Z~(AZ3qxpuH-7@&=h zseh;Qb5CnvjA9<<4H>6}GD6YX3@B`l_1P_<2`&zf!_t60M_m}o$B|Jia8NC?Lx^Ca zc2P-jdv#3<##Fp=PPGRT3>P&sFd^7SGTz*nVIo;9(gx8H#&8|R3W$UD>&U1&bK_8r zK5;-9L@wJz23>3mPpGU}fPt}D=NyYE5$X;PnQdXiGxa($KvLcICp&1niJxD!0H=9t z>Ozjq^I9{OF!?>XE`(i`@EE_&U-IJqqvAL8ticj<{^S4waw%>nTUY_D^vDXC0V>dx3ZAy)8CrpjDQ^^U(a)6!P zPEnb0IjKISrlhVM%ku6x!{vJFl@_yYvl4=ZmNI=;3`}DTku3t^EuSJ`!ZJwi# zYp=COYqr{JDkJT**T=TeUY@SB5%&4?-dJM!4|dt>?`goMd3b#z?6LOX8q&PsJ2`@( zvu!lp%A|Wfclg?ZZEbEETQrNUn8g2N>zdm+KCjlQjk9f-CwsU;+5FSmwifJK>o)B) z_N=)r(;QP!O>7vo1h4&S-FBU^-Ll)a*Jjx~$`0hJwpTW@Wm^T`)7q(K^~7a(O^?fM z#WtOZ%^|g0Fe${wp{FM1#A{0I={YL8IqI>1c3qmRYPcg~8YqXbCNz&O+pihTkF%_PkMId)J&Bm5qUP12Y?vE##9$B*OFfAA~IRl~=eVwVE`v57S zRl+hhZ{XOQL{3n6i^O{zf!0>3PMD{7;_C{S8L%h%))mt}j#3&%C{&CiFgm+%1i*GW zMS~8qi6InKJoe*U(xw1CtH)3w3Z&QRVI9bIoC*NvAMmnAbH2lIX2g0cs0DF*)z+-k zw5os;q>g+cAHxm#%jpy@m5)A`OD=OXS2GOI$9A1C?DM-Wqt;1ksU9@qs3sls4&jbL z3e-7{NYNXPC#MXD2Y8Y4E{k1e&6-1LIRhzQsZ=YB33hdi)S=K@QaIkGBXVRkY!)X) zOiO=Gs63-J^W&mG_0pVi%WH#J<>vJn*NtUVedbLRVF$6o=lYPow$+AH*CTst$@W0q zYuSSZ`E=$Wu2Al9n|-{|(2kuB&*jqEy4k>HqmF&>3g-weXL1+`F0FA^z;TkLC3i?T z76^t`A2H#)bI+XXfb=p8mOlBd2#z6OZ_jeuW|mW%7$HtQ>#N{n_GFMzZOQi2c$E)U z@`)yUmBJjf;t^p@tvQH}^F4K8SDV@<=P_}b)K^(tU0E-*4`)iV^OoiMq@COIRHLHV z+gN_=^cI;-#*dYAhYWEZFC1bgFtCj1Z5Pmmza4)i;wJtunt&`EhOZj zAiL6MH}w+*+42Cs)T_`+qF>d3L`$=W5fo# z4|`Bp$M!F`H{0vYD*&|WX2%vnndzOfL5^#%&PbFU+DUjZ0x>sF=wnPFv5+=}!ZoH* zja}?V0qRo#R0GMU216FAylCn7;Q zd=ohg2F|$fwz*?}`1K)M*cJ3U231tD?ZnZF5RQ{o)|Uptm43HP+icHy0M`?1_cH<^ zTDy07Q~Y(P5`0vdmoPQ``hAT0)sDzK&27I_t!?}pWjtJJY0(Xrx_u!3!>U!71 zm?re5bwNIkXdD<-SBFqG$Z=N~OUE^rPxS@qU?CD2ghfDmfg4kGkCe#-RC2fUTk@{0 z=a$^u3z1j&tMF=2b1ySpZ|*UJ&f9t~WwG-D<1~LWPm}C|fNxPX&dvnNLpU(Lpl;D3 zvXXA#ng?T!TVl|@o7i#6OavZu47p}-Z!yhZ>07QhL)_rZNn0)i?AGuLb*?WK2K2QU zF3WLECu8a$_q{UR8fXKAO*|QKqa=0tHk)h*8ci9$0cLB>qY#)K&$Tn?<+%~z+cQnX z7B4z9?kY?INXVQ7%Z02Pd0s_X*+4NF>-ba1(B?4ZfVUJhHKLyP;BxHOD{}J&m6gHZVlwd`0`%&Un>Vzq zEW9`n61g>b!^+AAA(7{om0ce6)eeTUstn^*em!?cOQD)vZ7soPm_S=h*G_+MVxR(t za=+BgWvYeaaMm}6kw(?a$rl`^xVf8 z#6v~j(g~CQ5Km;$RF;)-P4!jctQVHh3-PvC-jK4gW%OPRN{qklQge%n3eJ?_5Z5{M zObhUTp|)LuCS$a=Gjh(1Q5w%De?+JIZl|p?6b}Pcux$9Z6)`#_>r>Ow4gM$9a#6 zjVvvUc;X!^r~zR372?*23zm=>*ee`)!Sg z4oknBz^TG0$5?!f0C6~P3eT{cIqVXgQNyXH<&|`M?_~hutMPu(?en=UfiZb_gsDT^#q~>_78P4JOs@fTWP$EGrd+vSQ{{j7=!!V z7GmbRz)yF)p`Y_>cX2Jfwt=Y`e~U3eWDd?&;1DpD&T(QyANr;D#j5K?Q3VF@lvbLd zjKL9L5?K~N^t2SM1Eex8#J(_0B%i(_T;MOSFV5Y z4`6Fd?ZfamM=%_8C((3n3_Tq75VbJrU_98QBX66cqkz1xaCCM}VTB zoZ-6(P%hZ>FRG}fgF0jUOUp`78X(iq$5SR!-kA&_2zFgi@9YqCR!wyHo{F05IS0fC zh3&oVkf|cnqnTO)FVRfi-l$^v!QzbS@DL8rPC6Gm((bIGh+Mrst(E=nJ86ANl54&{ zI2bQ@=^3sL{{LYo{U73?g0Oo$?vKmOM3@1rbSsnh+_34Zt9Uh&fTyb-_TTi+|3PD0 z+c7X(=wioL`Y_o=NtuGN%gGcZ_H_U2@l-1c*;VELe_^>XMHE*p_M~;j{}+R}|Cl&C zzmdgmp0bglr4YwX>HT1AGS0+Y6)tvYLu!!}b`M*&m zq7Kjy+FfwsMr%W~M_OGRWEv{D2mjaA<-b?oQ=jZXGGE976Ijmc965L?tBS5bL^VfKv^)@DhGYM?u;EM5S6hpCbq2lb00 z*L%2HcR?6o(`HC<5ZxACfkzF3M>urC1ht;mmU(E!{k*mvw3`s3rDlCn z5H5G!g9`y1Ol_N=o-}nRVw=^qZx#N6nkrl`q*t&|G*}3w#UL8?I>lqw#QZ_Lk2pQ# z4@P?03v8@~0~`yA8(FK7bF^}X@p1)C;Krc#@nuAA3{5%O0w_gxv4+>n=U2^x|IHxX1PfiWG=?)s)RZRdx{26U-sa~-nv3b z(rSB%>J926xygBfTW5zy)LGw|q>0v6n&@Nef;xz^RoJtjbv%1x*+FhxNR{&$s2hY(S$gl={vp}OIu*Rg_}=;3El|IT#8WR?(34CtEmb#4F4Olo~u&K(%F8e?Rp1}H~; z5e;tvkXbWCziK=2GNT@6xHh`^%XFt->O2GGyyeo;K@EGrNk(rFnjsmQMJ?@g<#PWu z2;H2W0JKSOmq<;|9GB2_pYz3ZN@i`$sTq27-js`1ll9&KJvyeQLLW-ks|vJc;#pa6 zom8{ATbY91gF)-1=}s7E=23b!LLM23!JbfL8=}c+Tf(H=qb`&WLCgM=UxKP(bd+-cfkHN!oUkJkaALxbR~W> z?kbUuU*a5uZ;_&LKZB7^(F5QsVkwW7LpzN4iW#3}K;V#sXu1 z7npKb>qvQ5jpvD$Lvu%)4wTEd$BUnLxG8QvPDj4uM|2cIQqZb5rIyN?a&r+v8ix?; zxWtIN06B*o?dv|Djo&Py+?$K^QMxH@I_0Pr@$@X`cDh|!R2ECY)%l7uD)^aB%3I2X z7X0EV=NBTSVhH(Cj#uJoyWWh)lT;rloN>raDv4UhSG4Vir>TDVseYzYSh`jhn=+>Q zO}Qr8+jWS-(=w4YZ!B`3YR3}fcr9X$Y!5TQA-xb%CqL_B*KsG$(w}+PNLUIG9=j%WQa3w`AFpeQyo=i_th5F*_D; zHU6p$l_$v_g@5RFlfTMWvbHX4)cWJQA4$WCQJ-t}@07;a{!8UaHu{!mon+&$+HcP! zYcRgi@-I2`))aI;t{di;o_P~$3(8d`>5Csqf40ler?6bz=aT}MnK{RK_&)6w@Rl-;>TOG2fkaf zq=c1{-$#;uvdTj-iiwa~yqAK7vDF)G!=l$}3o0-jVjLnJk7jzA2)anRsl_r?$@PUG+x*M26!ye~!XOF40$tQy%1&WB3Hpj~RGbh@}oCG(UV zS<3L_4`3c02(q)wNc$jUR-^Uw_ zvdKQ4rPEMK%l`K9jY7>5uitOGNIL4+bK@L5cuB}0$$qgvT9mf}d4bq4iyR|ywU^|S zG;iS?`l5UqP=#|RTHo?B-D&<;674y6@?!`qNhgTAoE&wy5H=NgLSAGGioK*#P|0Hm z_(%FDl_O2znna<@2&7S)NtnA(OG8-Sq&^XT7(or$@l=GU4tm1u2d2tD9v`|audBKB zH#??vs9*K$QBJe-(}d2Ig0E((bb<>n=-JJKbI=K*T&OAN^is&YS!)mN((09zm$Lfv zf=R6tEJoggqq}H}PbiLuQ2JcNr3S`I*#&31Pv8YN>9L^EnD#g9yrF)(dTJvtm@@<& z=6AeIrBxVtUW>3+UX#;08fEm%oG0j%BF}+bWY!BhH7aj`kP?{%y#uaNZxlvO2-g@n zoe+g|g-WpGIvC}=pwkNG0(z)pC3F-_V!5_z4sLCiq zHa!uiN8G4J+=KU!+1m2pG)9>RM=5y1_y|gQ!E#@TmaM*XwcICq?qe~65^$x5yiCwJ zauW5S2ECHwg;2drB~zk)trnFs)=)sA(#fcx0PBx4m=LW%Wr*sX7!Nwi5Y=m0xabj@ zwXTsmK#bMnUq&5~fx|MHig=0<$iq#Ko5qbtTjm12+Ks350tX~`a+KoY#>=IU8={V! zTu8tjY|(NGdyqXT$|uvh@d~MkjGj0ZXOuZ27uD~{>8S}Rr~(7fJ@A1sMlQrj{d3@C zwjlM!m)MURgazN2%jmcIvY~K+;JHz4BoCgDgLqs8w4{|1aO;TPXq}M9p2T>qr*R{x zXLrcFR;1qNQhws8s|bqBxvV_J*@$kYtNAJm=Sl;f%aRJ%^%A>EjJ4#t7-f3MBas9) zGXdC4SCl7V$YtRIcD;m=(X&t<$;@V4%vb4hi7o|hMkPdRGt!9tmR!AuQB@*AN~4@; z8e$}PF?N0Io`|s}c9`?*W16Q0V~HGtO_%yZI5cQo0|AlgRZPvm5~fgkXCn=>PS1u? z!}Ll>AcoPHB{(8;vdrCFC?rS{RiHI0S$;vsO1MbHZ80Y!iI4Qei5jq#b!NhAi>M)> zdN)C*;$(WLJ&2_S@TcH-jh;|o059~HsWb|eyG5Y@;Bg9`E;72vadE=1T5{>noX5h! z2!L%aXx?HA1Jj`Vz?oDMKNH}^DAV9>lKM|lX3)x29vmTt2M17)f`W-~#6%#08W_wV zn-GFph^HW)Zdwf|hc4R^=nm=D3ML!pK?Rx?imij{ngbiK~_{YGODElBI(a zG|q;GT9t^(L$nSgmLXb$1Xai<azFza(b%lXSVp)zyNi%p=QL%hM0!=K(w#`vKVtcw6Ho<-mT2;wEgh7y86z@L_|o5FxkbR~<(R)D)& ziN$#sd%H&IodHt78vGfANM|%s6d?$6lgXvHkc7uBMNtStq^p~Z83sTkdkPqSJF`71 zW#-??>;f@ktqMA-3XpA!u{gfBw>VD4-Ag90)=Cy3+Q>ZEs-OZTYLKWSFqSfSa%5xd zVIc_|u*J00<03i%Vo9V8wp#Tr#VzPjsyGJ2h{}MI8XZ6MS3VNFnqZk!L^-@7SA|wS=3+xXv!cvS>!$AIm4I}|1^RyHVVVKG8lF8Ar z(II~dB>^R{8fxSVg=(`W{iP@15R@Pjc_hrt1n*cvD1b)`TA7;aK(mqH73Aq%VN{5@ zD8qye`o-c}3_NndO0Y4K5DGDjk)sg<1}_Cc0vnXJI z&OV);eLAqoYG#I5p(GQmVi&=@l=!+5NeHs*N@>7Xf~8ueh9%Q=rCh_Y#xkhDP2#_# zAQZh%0N(;Cl27T91{8&!(?g~M5}6s!k}xnH=^@8V1f&=aztNustSu zz-oFbn70dVlGq@d{4B&f#k4SSz%(Ae+h5JRE&E%)$(|z{&G;p=VV)shwkLVF(aF2q#lRYyQ z9c)%kcW-;M_3oyPPCwN>^01dzKmY8CcTH+ z(D0ZJ(@%AtYmS?Yi6`)gp3;1D$!Ck?RoG>Jzxv*yFuDoNS+_iLkx?NwqL zlTjd+G%3a08gk)o@gk>#-2q78G@zSiC<;eu8cR-#8eXS4Lx~iNMyaMNJ?+I3w$Tux zxW9{9K@M6kx>&ZcY`JtbXJ7*ANYi*}9ttv|(4-UY_9U_cG%t1nB5W&}4O3;cOs0{m zd5w!2gJ1F~1UghI2VjAKqk>S#u@EX(8T91eg_1s7LWluzZQe^jd_ zl)+7b3}h0uf+ZZtjwt54@T@TbMwdveHNbf^B~7>(mJ`rx!6_*TBa0a}2l9*Nwyf2? z#3A#1#*48mWsMqiSl7TS=4isM<}tIzOhWI3mSB>43F$&Qk&3w!(p2`LR2p>Z(J{>VtvUz(^Dh6Ev$$6Lltg- zM~p{;GzkPKlPo)^ zwN5ZGX-kE;!jv;T_{ zQ4tgQ9Td<>xH+z}+6l8i#y6P0VAKx3DOIC2XbGU8I-^v~HPgDNRrCbu20ey`SZvU1 zfKq0VM2?(b$%67|p*ogXf_WcNXWmC-F%v@qxz8Y2=CP63!t&2Uc1J3>faP~|gm{7B z<~+U1k=?x18mi>of7C)XQ8IizOjSuUWe{WBNOPdNQtx1_rQVK~dGZL;Oq1Lg+Z-Ao z0l1{l-fCs0tG4rX}{NF-!Tl0$QWg+sp%$cYd znh%4r2#V_fsFEOtaWaRYSdJPT?j`gmb0hR}Q7Z|=2@|$q*#JGD)dKVcPUTo7Ci;M7 z!edX)U9FH(^|qA+4cP{)7hv6uOgqGFEn0_u3uA?F!Jv_lP{49GnR;QY0?G@MC(~%K zW}(rNF(ex+17f>CWZ?M`v>_H%9CMZIYtd6$QL|-aD`d7XnQ>a@wB32htV?m2eBO!X zGPb-xTk8qdloJ~iDJ)gM<3{-@k3^1?n=FPsH-+K%F{J=ZY_U`b;LQ_kn;EeeN_LXW4EK`O|1bsB(c~GcI?Tl(kv3y7RBM*H?>+8`NP{APbYBl}{RrZw@p8)MN4 z{Rq762d98*1_T7us%6BPf^-~^H>UM9ruR=a;$;oet0!s8N1OV5U*$Q9EW4B~ZWUPTqSm`(g<1bChn4-DS)jWZPchS|_ zkcBIvul3{95gKyjo@a^u<1%@Ij9z!W+F`pl@utn4bO!WQ>Z)dd}%uNg-S0^ zBSzW!_cjLx3`5+0G?&Bb4*J@ns4rxvLkSQ}FtJ)pm_ZkM9V)q3xL2?(=-Hhq$$)zD zO2B@oR_@4a-QYM_R|qDo3JKQ! z_GdF)044Um8}x!&ZevnWq8zRP5uF6~lh?GEt*DU6C))`VNB%1CjRJx-luV!0X$&1u zTnbC34g_Gh4SF`r)O!pEsANnMG;k3>fKEn&OVtAs;m{x%3`3MnK!VYVbq!+VX@%lb z5tTCAgJrkrG&Q=Uq!QN2!=f*-MZ^fMG*>GUg#dd@Khs zsnB93QnW&Xg+QCrr+d#kBsF8cvJ1)($XkvvOa`*bh#wtgS{bZ1DVSEUUTV&Bb#1^_ zyaPHmEiGkO08YQ*oAU6k9!Ng>mQC6eZ95RGwqYq0olNu@a`k{UXPCk-MT|a#SSdL| zmoYu2xjR2A*mZkL55drqRbEpqOq^ zyq2-?s-$bwVF_K39a&f*Eg356DnrCPd@RKT&yo+4pdk6uJkOFZdAj+mzMC2e4lMcQ zZ5G**kF1zcFf)rnB-|N-bsAKe7Yx({+%W^GxWN`C%Z*Ppylh@73^;fJAk)$KLGJ-Q zAQ9tDQz@(}`c`+7L;KJNHX?TanWaD;X;uZR=qXb>O4%8q1!xTLNIC~q&^g1$Em~5- z&{89m&hq+UT?JIHw@-H0({u`iSl6?zTi4qs+VnwmDzQ41mAg;9A_pH0S=Zx^8c~aF zR&HHSqQ0KS9#=SIxRN40rV4bVBAvBn#WKNPJSlKa}9~^ zmRp`YSLrX01z?vQ&-t>Gq{iY`mlvBuV+5W37@0N{JD`>H5g@0AgyVGu6hj=#J6=VV z8>M=1&J!L6d*6srdI26+8A@E7tyS7kymg0V;5cWVQ{ydA_&%UyY~@5RoO;F&KgCGF{>J!rH? z*uLvhs%5hxgFcc1O~v~Y->)f&c8-S16P0i8@-?Cd_PuK(*={u8Fn-!{<%`;&y=jB7d%EZp5uU$)X2ZxR8j784 zw5P3Pj}y4csLS3z+9Qc~J0i~j4@M1gsPAj2F@=3pyv1QlfYNIvoKR6Lua6{i%t%+ky_f6C7zYN<+Xq>TN&l z5+*zFewvY6i_r-Jr6&9v{{`;CNTF@&PkUP%w3Crqw)5M53aYd*`w)MN`<29bqYY{I zX%gG#xsplyRVp17#d2<3Je){_7lQSOrbW zWSnTNQd8wnds5`2XD+;2mSe3_2}wE`&zqb?2bHppRxYco1ctuV( zv8!0OM2f3eP0n*U#$}#nJr~M;+vDRv>Gh8EQkP_|DgBCGCF)d^b4rbh9RA1b5uts* zY}!8WW>(kyumL$%-CfbDm?&E1sX1~P&SW?yDxY~W1_g;OMYQrtP&JwnDUVaAJY;b( zCJ)hFg^0$(u}k8x{`lUC^t8byH&IK8Y7cBiN=n6->Y6-7J*7B$l)iJxRxL!&3NB)Z*uYdbsIDlQ8g{GTV#1ClisIU^n`jyTAEC`f zbRycEJQUIGJ9M&lMgA9E5v{y;NuKdaPHyF0G3vad%*x~J;k31j=1xegd?LU*H)l?g z!!Hw;Zl3w^t79qsxBuhOtLcLZpXUrd*YTHL%WL$>|NY92wm*hDt!{EY?e&Az75n^D z^;=8+eszQF=5_vdyJxq07v{8I_gn4Rk5^^kMJ>LUe%_VXCnix=ui@EUPalqnU3IK$ zy*q`vM;Fy8O8@8;JN7JWyvrnh7QT1w(rO{jtyZ*doV~~xHnhPH9de?h3lAq>3OlW7 z-0*VKBNb92j&2y{dtgT9!Mk_&eBXbqaJH*+OnK+mA@Z}9CruN&{PyY3eXpr2UZ^B5 z_xrEm3uMR`TJ$(Eg09=;s;GG5uIfx_|J zor^hFuQJ&(xbplPg+eY-A7STEN?E?B|KgK@#f$2S}Ctii}jxowEA`A=VBCP zsH$iwHW!=bgyuAw)Ubbg`jAF}fqjOi1f&k=Gc;{jTHo}5K540eLk10?)W9Lqmst)A zBq4+hLi_@dE=JqQ&#XsKK_T$T}6!pcCUmUOV&?Ub04~j!>{a)U^)2i{#Ur#T(Fx{uu zU}53m3!f!)3A#Mj<;u7tk+Y*CN98T(|S;^?;%8)nykF3j=f7PK3^ z>GONtjN{jzO6VqT=B^J4nco@F>Zgy4eVlpL-J#~8@NlzXruV+- z%alz+x3=GRF63&)901Yx0HW=7AS%DT76T%;cbFxP{EsNR7ZWD{QN>~)iXD)e?2m5= zNF8E_ArtUN3=T4xg2cK6Lv^KS5Jg4Hj{gW{Hc)l)P!Dc3Uf$`sk&bu8uGv#pCdA+x~rtBO4vwznN&1|QizaMe5^S4(Y*8VA@al-MnLzZ(s z-hMF+3pyPAM>&Tq!*^q+K3!FJ(5AeIo*#|r@#6NXqk%0a_N$-OtIZRSzLz$Kq@Hv; zetD>}>(IqdxW-(_gX%F&J->h0VfObE3mg53Qvp4l?u2O{or!N=z2vngz`BR<3gBPODHeX+Eb;iVDJ^DB8 zv$I8h-+gxEg1P2(B~a?xBm+2+Yh-%_RoroehZa+f}daL6fwl{LGwRG z{IRvp=EL>2x{9$9Dn*MQiBUPNbHXRJ`sY!pXc$Q}nPl1ls;eE408nkkHe#eb4uA^% zCjjcNYECZ=sx@z8vFgA(I?4bot9w+<*vZGHtex|E;q$E6PmGHXG@MhT*6!~a-eJ5%U|Rhd|pfv!fscW6_{J}FCSaqusV5bZr!CfR?NTfP4AiQ zXE)ffHlsppWYxuoyw4A2&7MvGS{K_lR>jVVRJ4$4~zA!c|pb zWDTb}cAZrr?~@_rPX>J3=hf&X;}zCzmfL|{25i{1vZ_!05x?u^PIC0Td)d8l->@Hb z-F{eAr)Jf5M;wQB`DmWJ*Rp$ef|#3LcBP|eRjC1JkBR`TKW*3K zIQ=`!5_>Xd%F$tV^~^a>{F3-e<>fF*rb=Q3Rmnt$RJ+A8`HOWVz4k2{He;u>v~*)D z7@GloY2SFVvBmK8{`fZV^wG?JY9I!SbxlF_>WU!%t{|WoqIE@z{_ha=LoU;jr72sk z{2V#E_SiuIm9Fi(e&fi3jy@eWoV;AIov-V|)2mOn-HJn7V}nh^mt)=z35*U9;&-0zQpGiQo}C;t{NE`Ish z+3c+aUfG{L|Iy<&&CZzAPTRs~E{WvYwC?L(qgLNF**AYuS=uanF=4fP>v9g(B@-UR zje5<0Vd$Wl$hnCT4|e|I6Y+Jff9#S?o}*frMxI!BrSbSVOA}?=4K7<=JzMy9{-pOu zv2R`|4<9l**@0&rfM>PnO2FYk{*O|W<5mKRN(CD7UJb6~Eb)^>HA8=>GE=lsqMx2uKz?5M@;rQDSQ`Jf~Goi%HG?d5A31lA%zDKF|l|zs1_&5bzi&Mu=hdIN;Il z75-oTTaliTnvs^F*1v$px93fAD|qdeJ>_tMJgolZJKHvl{Q2bQj?w&tgr#gGA zJNeC+8M^}Vg=N!Hd++KZ`>vhQqr-yBpEkeV-+6?y$}jP7##b+d2Y&Kh{eeDK$~PgH>u<#%S)_Vpg}$M3Ihj#?1l@=Sew$li+W z7Ed4KICS2wr6G&@`5)=1z1usXS^4=>jm@sBD+j$eVQMqN)TGW(r@XsEn!K6l=yBzc zW8(D3=XO=N*KX?Hj?}BuWBLAjd&fDo9Fre2)a#*m{OeK43ElY$j^(sJUMx5NY3T00 zUAOuN-hMH0(ut0p3l$7ZJ011= z`iE9qZ@subZu^ZDYtrlOYIo!lAEEjPr_fH*KIs%zzre);Ev%x$aJj`Z!>?QZ8stA1Iq_;{nVeU=*OD))yY zy!J1&9;^|&W6QuMnM+3`ZX3MRW7YnzT0a)j{+tq&^7q$QI_6FDIo5aIV#8!1N!G-F zQ~ZowH@$9c-+a8!wo$Rl{1yQn*3aF%a@4x5IiC-&d|~!vkKx{dL2ERFbGlEfwm;|5 zgyUXk?|HUA_Qk`ftIzo4v`nXQc?0r(9ej6n_DNH%H`*iJ6V69hS$h6u;Frw;;>r&? z=CS-wm;wv@+W~e{pwrY~roj1sVhZYuumeGLgYZW_Yy&BZ*>q61|K%+IgT^51%ESiK zwx~Myt=}%+@m_tOS)QBLWp%xi`@_K{jU0V*b8~xaeyA&Ve*B+#Yj<1wxqQ0o zpu?fP<+Hmq)6f5Dz&UZ|%$ZqY)$`T!zZ{cs;kv_v?5Oa2icXf{V|H!#-WAaK>vKP> zZ5Qe|e%YEvM>g!>wF7_f-sV#^y(be=VCtY7Wv9QaeayZ`fWgvizZ*A7RN=AX;o!4+nN#J!u1D|+XweiTwYvB{cDL3Hh_@Lw--c1*to%Fn5$CBey&o&++#dU!LBxWYDwU z9)1?)-u%aXdlr6FUNd;bH*q&tH58Ud7V6_Zonkya?)9vn=gtT`G-lAMq>1g9-|`Et z^|90br$-wG<{EQ5n|>c~a^iExS@%z!-MFWr()r%t_H7r*YkjrsRmGfI&MpZFoqf7o z)PL@hSH1qhue3c|Uvc_AP&IT6JgW z%EQ6e0++lf92j!lUt#V3>eQl*V;8%>_;q_srSv@^Z9?viYq_;e;|5I*wHZ@m{_X4S z7FKB!+i;*ygKq}zjC^>vrAw6Wtm!)y0oiFcZ-;+9Bl^!?7tX~WI&VJPD|pP#rE`q0 zExW#2nc#3|ipw`Oqdz-W;QAnW)M-=C-F<()((<;`37I^2j-MB1Jv%>t&EttOP5cVuDnF;nPdcd{47in4vC7ru>wY;t zwp?PXUCB@DFOT!6)6XxuirCg(T8Z^$(K7jei1cr*G8eCV=UC2)m5SD!9ponG z606<{tRok%iaVLKV#%jEtaI2G)*TckEFgNibe_HU>izItv+GXpbXO6X^zvalaYTtK zoK5}3zB$d!P1%8^bR67i#0BCv6)WjUI9?Qh(EDH6(+3B6Qjv?khJk%e&r)x*(dL_` z4oe#R&idc*!I*v-ODZE)g%wtw>oGmf^`mDAr|-_wgnqZ_<96rEA9+x4vyIQgW?q{e zatrI8ja#>J%Awt_4__{vQCpvG*ch?O&{)8&aL6eb@$#^T@&v)=-{%j)PFom z8|+@L<>d%d|JgUDIZkW4W@gpSCp!xjx2?*a`;p)NB_>tV>RY;W*|BM`yw(@labNE_ zVU6qAcwzd^2KtPzE=>v^c;m=x?-4FFYdNiJZt#3{via626;>{&wkP=Liy1TOd{Obo zr0#EejqcU_v(Pif$qQZyy}!QHU3gM()DqvZNexrL9{p$4Q`4sJdtl0H^rq41kaK%~ z;l2vkm-P8hbE_O&AtYSec5Lb`S=)jKch1LeXnymsd+!TVDlE0i3@~FQhFfK_${dlT zV&XaRe>NwDa2BsTs%;<2x-U3_*A8?v{*t#o@|&s6l`h$9rcQrRJw9!IhS7IRgOt7Ve80)=q1t}9t2J)R z#^2R->g?{@_tWyLySQAgcEY$X^YQJi1;(1oT3M#{y6|UJZQ;HBsg;*jj(w~i;M?nI zVz)C_&Q72F(p{7EkNg(XUkr>m^Yr|zr{^BQS6(@|`~IrY;r^d&T|Yke$!Al$CN_9^ z?bQ#TS3I`)wz*xyE*rg$bUaz9){xV$TK~N4`rprW`y}vCMDN#rJ?eN&_8|B8{{f}T B|C#^* literal 0 HcmV?d00001 diff --git a/Lib/Unity/Microsoft.Practices.Unity.xml b/Lib/Unity/Microsoft.Practices.Unity.xml new file mode 100644 index 0000000..2e0af9b --- /dev/null +++ b/Lib/Unity/Microsoft.Practices.Unity.xml @@ -0,0 +1,5910 @@ + + + + Microsoft.Practices.Unity + + + + + Base class for attributes that can be placed on parameters + or properties to specify how to resolve the value for + that parameter or property. + + + + + Create an instance of that + will be used to get the value for the member this attribute is + applied to. + + Type of parameter or property that + this attribute is decoration. + The resolver object. + + + + This attribute is used to indicate which constructor to choose when + the container attempts to build a type. + + + + + This attribute is used to mark methods that should be called when + the container is building an object. + + + + + This attribute is used to mark properties and parameters as targets for injection. + + + For properties, this attribute is necessary for injection to happen. For parameters, + it's not needed unless you want to specify additional information to control how + the parameter is resolved. + + + + + Create an instance of with no name. + + + + + Create an instance of with the given name. + + Name to use when resolving this dependency. + + + + Create an instance of that + will be used to get the value for the member this attribute is + applied to. + + Type of parameter or property that + this attribute is decoration. + The resolver object. + + + + The name specified in the constructor. + + + + + An used to mark a dependency + as optional - the container will try to resolve it, and return null + if the resolution fails rather than throw. + + + + + Construct a new object. + + + + + Construct a new object that + specifies a named dependency. + + Name of the dependency. + + + + Create an instance of that + will be used to get the value for the member this attribute is + applied to. + + Type of parameter or property that + this attribute is decoration. + The resolver object. + + + + Name of the dependency. + + + + + A that composites other + ResolverOverride objects. The GetResolver operation then + returns the resolver from the first child override that + matches the current context and request. + + + + + Base class for all override objects passed in the + method. + + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + Wrap this resolver in one that verifies the type of the object being built. + This allows you to narrow any override down to a specific type easily. + + Type to constrain the override to. + The new override. + + + + Wrap this resolver in one that verifies the type of the object being built. + This allows you to narrow any override down to a specific type easily. + + Type to constrain the override to. + The new override. + + + + Add a new to the collection + that is checked. + + item to add. + + + + Add a setof s to the collection. + + items to add. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + Class that returns information about the types registered in a container. + + + + + The type that was passed to the method + as the "from" type, or the only type if type mapping wasn't done. + + + + + The type that this registration is mapped to. If no type mapping was done, the + property and this one will have the same value. + + + + + Name the type was registered under. Null for default registration. + + + + + The registered lifetime manager instance. + + + + + The lifetime manager for this registration. + + + This property will be null if this registration is for an open generic. + + + + A class that overrides + the value injected whenever there is a dependency of the + given type, regardless of where it appears in the object graph. + + + + + Create an instance of to override + the given type with the given value. + + Type of the dependency. + Value to use. + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + A convenience version of that lets you + specify the dependency type using generic syntax. + + Type of the dependency to override. + + + + Construct a new object that will + override the given dependency, and pass the given value. + + + + + A convenience form of that lets you + specify multiple parameter overrides in one shot rather than having + to construct multiple objects. + + + This class isn't really a collection, it just implements IEnumerable + so that we get use of the nice C# collection initializer syntax. + + + + + Base helper class for creating collections of objects + for use in passing a bunch of them to the resolve call. This base class provides + the mechanics needed to allow you to use the C# collection initializer syntax. + + Concrete type of the this class collects. + Key used to create the underlying override object. + Value that the override returns. + + + + Add a new override to the collection with the given key and value. + + Key - for example, a parameter or property name. + Value - the value to be returned by the override. + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + When implemented in derived classes, this method is called from the + method to create the actual objects. + + Key value to create the resolver. + Value to store in the resolver. + The created . + + + + When implemented in derived classes, this method is called from the + method to create the actual objects. + + Key value to create the resolver. + Value to store in the resolver. + The created . + + + + Event argument class for the event. + + + + + Construct a new object with the + given child container object. + + An for the newly created child + container. + + + + The newly created child container. + + + + + An extension context for the created child container. + + + + + Base class for subclasses that let you specify that + an instance of a generic type parameter should be resolved. + + + + + Base type for objects that are used to configure parameters for + constructor or method injection, or for getting the value to + be injected into a property. + + + + + Test to see if this parameter value has a matching type for the given type. + + Type to check. + True if this parameter value is compatible with type , + false if not. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + Convert the given set of arbitrary values to a sequence of InjectionParameterValue + objects. The rules are: If it's already an InjectionParameterValue, return it. If + it's a Type, return a ResolvedParameter object for that type. Otherwise return + an InjectionParameter object for that value. + + The values to build the sequence from. + The resulting converted sequence. + + + + Convert an arbitrary value to an InjectionParameterValue object. The rules are: + If it's already an InjectionParameterValue, return it. If it's a Type, return a + ResolvedParameter object for that type. Otherwise return an InjectionParameter + object for that value. + + The value to convert. + The resulting . + + + + Name for the type represented by this . + This may be an actual type name or a generic argument name. + + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + name to use when looking up in the container. + + + + Test to see if this parameter value has a matching type for the given type. + + Type to check. + True if this parameter value is compatible with type , + false if not. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + Return a instance that will + return this types value for the parameter. + + The actual type to resolve. + The resolution key. + The . + + + + Name for the type represented by this . + This may be an actual type name or a generic argument name. + + + + + A that lets you specify that + an instance of a generic type parameter should be resolved, providing the + value if resolving fails. + + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + name to use when looking up in the container. + + + + Return a instance that will + return this types value for the parameter. + + The actual type to resolve. + The resolution key. + The . + + + + A class that lets you specify a factory method the container + will use to create the object. + + This is a significantly easier way to do the same + thing the old static factory extension was used for. + + + + Base class for objects that can be used to configure what + class members get injected by the container. + + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Type to register. + Policy list to add policies to. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Type of interface being registered. If no interface, + this will be null. + Type of concrete type being registered. + Name used to resolve the type object. + Policy list to add policies to. + + + + Create a new instance of with + the given factory function. + + Factory function. + + + + Create a new instance of with + the given factory function. + + Factory function. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Type of interface being registered. If no interface, + this will be null. This parameter is ignored in this implementation. + Type of concrete type being registered. + Name used to resolve the type object. + Policy list to add policies to. + + + + A that can be passed to + to configure a + parameter or property as an optional dependency. + + + + + A base class for implementing classes + that deal in explicit types. + + + + + Create a new that exposes + information about the given . + + Type of the parameter. + + + + Test to see if this parameter value has a matching type for the given type. + + Type to check. + True if this parameter value is compatible with type , + false if not. + + + + The type of parameter this object represents. + + + + + Name for the type represented by this . + This may be an actual type name or a generic argument name. + + + + + Construct a new object that + specifies the given . + + Type of the dependency. + + + + Construct a new object that + specifies the given and . + + Type of the dependency. + Name for the dependency. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + A generic version of that lets you + specify the type of the dependency using generics syntax. + + Type of the dependency. + + + + Construct a new . + + + + + Construct a new with the given + . + + Name of the dependency. + + + + A special lifetime manager which works like , + except that in the presence of child containers, each child gets it's own instance + of the object, instead of sharing one in the common parent. + + + + + A that holds onto the instance given to it. + When the is disposed, + the instance is disposed with it. + + + + + Base class for Lifetime managers which need to synchronize calls to + . + + + + The purpose of this class is to provide a basic implementation of the lifetime manager synchronization pattern. + + + Calls to the method of a + instance acquire a lock, and if the instance has not been initialized with a value yet the lock will only be released + when such an initialization takes place by calling the method or if + the build request which resulted in the call to the GetValue method fails. + + + + + + + Base class for Lifetime managers - classes that control how + and when instances are created by the Unity container. + + + + + A that controls how instances are + persisted and recovered from an external store. Used to implement + things like singletons and per-http-request lifetime. + + + + + Represents a builder policy interface. Since there are no fixed requirements + for policies, it acts as a marker interface from which to derive all other + policy interfaces. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object to store. + + + + Remove the value this lifetime policy is managing from backing store. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + + + + This interface provides a hook for the builder context to + implement error recovery when a builder strategy throws + an exception. Since we can't get try/finally blocks onto + the call stack for later stages in the chain, we instead + add these objects to the context. If there's an exception, + all the current IRequiresRecovery instances will have + their Recover methods called. + + + + + A method that does whatever is needed to clean up + as part of cleaning up after an exception. + + + Don't do anything that could throw in this method, + it will cause later recover operations to get skipped + and play real havoc with the stack trace. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + Calls to this method acquire a lock which is released only if a non-null value + has been set for the lifetime manager. + + + + Performs the actual retrieval of a value from the backing store associated + with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + This method is invoked by + after it has acquired its lock. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + Setting a value will attempt to release the lock acquired by + . + + + + Performs the actual storage of the given value into backing store for retrieval later. + + The object being stored. + This method is invoked by + before releasing its lock. + + + + Remove the given object from backing store. + + + + + A method that does whatever is needed to clean up + as part of cleaning up after an exception. + + + Don't do anything that could throw in this method, + it will cause later recover operations to get skipped + and play real havoc with the stack trace. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Standard Dispose pattern implementation. Not needed, but it keeps FxCop happy. + + Always true, since we don't have a finalizer. + + + + This is a custom lifetime manager that acts like , + but also provides a signal to the default build plan, marking the type so that + instances are reused across the build up object graph. + + + + + Construct a new object that does not + itself manage an instance. + + + + + Construct a new object that stores the + give value. This value will be returned by + but is not stored in the lifetime manager, nor is the value disposed. + This Lifetime manager is intended only for internal use, which is why the + normal method is not used here. + + Value to store. + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. In this class, + this is a noop, since it has special hooks down in the guts. + + The object being stored. + + + + Remove the given object from backing store. Noop in this class. + + + + + A strategy that handles Hierarchical lifetimes across a set of parent/child + containers. + + + + + Represents a strategy in the chain of responsibility. + Strategies are required to support both BuildUp and TearDown. + + + + + Represents a strategy in the chain of responsibility. + Strategies are required to support both BuildUp and TearDown. Although you + can implement this interface directly, you may also choose to use + as the base class for your strategies, as + this class provides useful helper methods and makes support BuildUp and TearDown + optional. + + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + Called during the chain of responsibility for a build operation. The + PostBuildUp method is called when the chain has finished the PreBuildUp + phase and executes in reverse order from the PreBuildUp calls. + + Context of the build operation. + + + + Called during the chain of responsibility for a teardown operation. The + PreTearDown method is called when the chain is being executed in the + forward direction. + + Context of the teardown operation. + + + + Called during the chain of responsibility for a teardown operation. The + PostTearDown method is called when the chain has finished the PreTearDown + phase and executes in reverse order from the PreTearDown calls. + + Context of the teardown operation. + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + Called during the chain of responsibility for a build operation. The + PostBuildUp method is called when the chain has finished the PreBuildUp + phase and executes in reverse order from the PreBuildUp calls. + + Context of the build operation. + + + + Called during the chain of responsibility for a teardown operation. The + PreTearDown method is called when the chain is being executed in the + forward direction. + + Context of the teardown operation. + + + + Called during the chain of responsibility for a teardown operation. The + PostTearDown method is called when the chain has finished the PreTearDown + phase and executes in reverse order from the PreTearDown calls. + + Context of the teardown operation. + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + A that will attempt to + resolve a value, and return null if it cannot rather than throwing. + + + + + A that is used at build plan execution time + to resolve a dependent value. + + + + + Get the value for a dependency. + + Current build context. + The value for the dependency. + + + + Construct a new object + that will attempt to resolve the given name and type from the container. + + Type to resolve. Must be a reference type. + Name to resolve with. + + + + Construct a new object + that will attempt to resolve the given type from the container. + + Type to resolve. Must be a reference type. + + + + Get the value for a dependency. + + Current build context. + The value for the dependency. + + + + Type this resolver will resolve. + + + + + Name this resolver will resolve. + + + + + Extension methods on to provide convenience + overloads (generic versions, mostly). + + + + + Removes an individual policy type for a build key. + + The type the policy was registered as. + to remove the policy from. + The key the policy applies. + + + + Removes a default policy. + + The type the policy was registered as. + to remove the policy from. + + + + Gets an individual policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + The policy list that actually contains the returned policy. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + to search. + The interface the policy is registered under. + The key the policy applies. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + to search. + The interface the policy is registered under. + The key the policy applies. + The policy list that actually contains the returned policy. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy list that actually contains the returned policy. + The policy in the list, if present; returns null otherwise. + + + + Gets an individual policy. + + to search. + The interface the policy is registered under. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy in the list, if present; returns null otherwise. + + + + Get the non default policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy in the list, if present; returns null otherwise. + + + + Get the non default policy. + + The interface the policy is registered under. + to search. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy list that actually contains the returned policy. + The policy in the list, if present; returns null otherwise. + + + + Get the non default policy. + + to search. + The interface the policy is registered under. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy in the list, if present; returns null otherwise. + + + + Sets an individual policy. + + The interface the policy is registered under. + to add the policy to. + The policy to be registered. + The key the policy applies. + + + + Sets a default policy. When checking for a policy, if no specific individual policy + is available, the default will be used. + + The interface to register the policy under. + to add the policy to. + The default policy to be registered. + + + + Base class for the current operation stored in the build context. + + + + + Create a new . + + Type currently being built. + + + + The type that's currently being built. + + + + + Build plan for that will + return a func that will resolve the requested type + through this container later. + + + + + A build plan is an object that, when invoked, will create a new object + or fill in a given existing one. It encapsulates all the information + gathered by the strategies to construct a particular object. + + + + + Creates an instance of this build plan's type, or fills + in the existing type if passed in. + + Context used to build up the object. + + + + Creates an instance of this build plan's type, or fills + in the existing type if passed in. + + Context used to build up the object. + + + + The almost inevitable collection of extra helper methods on + to augment the rich set of what + Linq already gives us. + + + + + Execute the provided on every item in . + + Type of the items stored in + Sequence of items to process. + Code to run over each item. + + + + Create a single string from a sequenc of items, separated by the provided , + and with the conversion to string done by the given . + + This method does basically the same thing as , + but will work on any sequence of items, not just arrays. + Type of items in the sequence. + Sequence of items to convert. + Separator to place between the items in the string. + The conversion function to change TItem -> string. + The resulting string. + + + + Create a single string from a sequenc of items, separated by the provided , + and with the conversion to string done by the item's method. + + This method does basically the same thing as , + but will work on any sequence of items, not just arrays. + Type of items in the sequence. + Sequence of items to convert. + Separator to place between the items in the string. + The resulting string. + + + + A class that lets you + override a named parameter passed to a constructor. + + + + + Construct a new object that will + override the given named constructor parameter, and pass the given + value. + + Name of the constructor parameter. + Value to pass for the constructor. + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + A convenience form of that lets you + specify multiple parameter overrides in one shot rather than having + to construct multiple objects. + + + + + When implemented in derived classes, this method is called from the + method to create the actual objects. + + Key value to create the resolver. + Value to store in the resolver. + The created . + + + + A that lets you override + the value for a specified property. + + + + + Create an instance of . + + The property name. + Value to use for the property. + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + A convenience form of that lets you + specify multiple property overrides in one shot rather than having + to construct multiple objects. + + + + + When implemented in derived classes, this method is called from the + method to create the actual objects. + + Key value to create the resolver. + Value to store in the resolver. + The created . + + + + Interface defining the configuration interface exposed by the + Static Factory extension. + + + + + Base interface for all extension configuration interfaces. + + + + + Retrieve the container instance that we are currently configuring. + + + + + Register the given factory delegate to be called when the container is + asked to resolve . + + Type that will be requested from the container. + Delegate to invoke to create the instance. + The container extension object this method was invoked on. + + + + Register the given factory delegate to be called when the container is + asked to resolve and . + + Type that will be requested from the container. + The name that will be used when requesting to resolve this type. + Delegate to invoke to create the instance. + The container extension object this method was invoked on. + + + + Represents the context in which a build-up or tear-down operation runs. + + + + + Represents the context in which a build-up or tear-down operation runs. + + + + + Add a new set of resolver override objects to the current build operation. + + objects to add. + + + + Get a object for the given + or null if that dependency hasn't been overridden. + + Type of the dependency. + Resolver to use, or null if no override matches for the current operation. + + + + A convenience method to do a new buildup operation on an existing context. + + Key to use to build up. + Created object. + + + + A convenience method to do a new buildup operation on an existing context. This + overload allows you to specify extra policies which will be in effect for the duration + of the build. + + Key defining what to build up. + A delegate that takes a . This + is invoked with the new child context before the build up process starts. This gives callers + the opportunity to customize the context for the build process. + Created object. + + + + Gets the head of the strategy chain. + + + The strategy that's first in the chain; returns null if there are no + strategies in the chain. + + + + + Gets the associated with the build. + + + The associated with the build. + + + + + Gets the original build key for the build operation. + + + The original build key for the build operation. + + + + + Get the current build key for the current build operation. + + + + + The set of policies that were passed into this context. + + This returns the policies passed into the context. + Policies added here will remain after buildup completes. + The persistent policies for the current context. + + + + Gets the policies for the current context. + + Any policies added to this object are transient + and will be erased at the end of the buildup. + + The policies for the current context. + + + + + Gets the collection of objects + that need to execute in event of an exception. + + + + + The current object being built up or torn down. + + + The current object being manipulated by the build operation. May + be null if the object hasn't been created yet. + + + + Flag indicating if the build operation should continue. + + true means that building should not call any more + strategies, false means continue to the next strategy. + + + + An object representing what is currently being done in the + build chain. Used to report back errors if there's a failure. + + + + + The build context used to resolve a dependency during the build operation represented by this context. + + + + + Initialize a new instance of the class. + + + + + Initialize a new instance of the class with a , + , and the + build key used to start this build operation. + + The to use for this context. + The to use for this context. + The to use for this context. + Build key to start building. + The existing object to build up. + + + + Create a new using the explicitly provided + values. + + The to use for this context. + The to use for this context. + The set of persistent policies to use for this context. + The set of transient policies to use for this context. It is + the caller's responsibility to ensure that the transient and persistent policies are properly + combined. + Build key for this context. + Existing object to build up. + + + + Add a new set of resolver override objects to the current build operation. + + objects to add. + + + + Get a object for the given + or null if that dependency hasn't been overridden. + + Type of the dependency. + Resolver to use, or null if no override matches for the current operation. + + + + A convenience method to do a new buildup operation on an existing context. + + Key to use to build up. + Created object. + + + + A convenience method to do a new buildup operation on an existing context. This + overload allows you to specify extra policies which will be in effect for the duration + of the build. + + Key defining what to build up. + A delegate that takes a . This + is invoked with the new child context before the build up process starts. This gives callers + the opportunity to customize the context for the build process. + Created object. + + + + Gets the head of the strategy chain. + + + The strategy that's first in the chain; returns null if there are no + strategies in the chain. + + + + + Get the current build key for the current build operation. + + + + + The current object being built up or torn down. + + + The current object being manipulated by the build operation. May + be null if the object hasn't been created yet. + + + + Gets the associated with the build. + + + The associated with the build. + + + + + Gets the original build key for the build operation. + + + The original build key for the build operation. + + + + + The set of policies that were passed into this context. + + This returns the policies passed into the context. + Policies added here will remain after buildup completes. + The persistent policies for the current context. + + + + Gets the policies for the current context. + + + Any modifications will be transient (meaning, they will be forgotten when + the outer BuildUp for this context is finished executing). + + + The policies for the current context. + + + + + Gets the collection of objects + that need to execute in event of an exception. + + + + + Flag indicating if the build operation should continue. + + true means that building should not call any more + strategies, false means continue to the next strategy. + + + + An object representing what is currently being done in the + build chain. Used to report back errors if there's a failure. + + + + + The build context used to resolve a dependency during the build operation represented by this context. + + + + + Represents that a dependency could not be resolved. + + + Represents that a dependency could not be resolved. + + + + + Initializes a new instance of the class with no extra information. + + + + + Initializes a new instance of the class with the given message. + + Some random message. + + + + Initialize a new instance of the class with the given + message and inner exception. + + Some random message + Inner exception. + + + + Initializes a new instance of the class with the build key of the object begin built. + + The build key of the object begin built. + + + + Initializes a new instance of the class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + The exception thrown when injection is attempted on a method + that is an open generic or has out or ref params. + + + The exception thrown when injection is attempted on a method + that is an open generic or has out or ref params. + + + + + Construct a new with no + message. + + + + + Construct a with the given message + + Message to return. + + + + Construct a with the given message + and inner exception. + + Message to return. + Inner exception + + + + Used for serialization. + + Serialization info. + Serialization context. + + + + Extension methods to provide convenience overloads over the + interface. + + + + + Start a recursive build up operation to retrieve the default + value for the given type. + + Type of object to build. + Parent context. + Resulting object. + + + + Start a recursive build up operation to retrieve the named + implementation for the given type. + + Type to resolve. + Parent context. + Name to resolve with. + The resulting object. + + + + Add a set of s to the context, specified as a + variable argument list. + + Context to add overrides to. + The overrides. + + + + Data structure that stores the set of + objects and executes them when requested. + + + + + Add a new object to this + list. + + Object to add. + + + + Execute the method + of everything in the recovery list. Recoveries will execute + in the opposite order of add - it's a stack. + + + + + Return the number of recovery objects currently in the stack. + + + + + Represents a lifetime container. + + + A lifetime container tracks the lifetime of an object, and implements + IDisposable. When the container is disposed, any objects in the + container which implement IDisposable are also disposed. + + + + + Adds an object to the lifetime container. + + The item to be added to the lifetime container. + + + + Determine if a given object is in the lifetime container. + + + The item to locate in the lifetime container. + + + Returns true if the object is contained in the lifetime + container; returns false otherwise. + + + + + Removes an item from the lifetime container. The item is + not disposed. + + The item to be removed. + + + + Gets the number of references in the lifetime container + + + The number of references in the lifetime container + + + + + Represents a lifetime container. + + + A lifetime container tracks the lifetime of an object, and implements + IDisposable. When the container is disposed, any objects in the + container which implement IDisposable are also disposed. + + + + + Adds an object to the lifetime container. + + The item to be added to the lifetime container. + + + + Determine if a given object is in the lifetime container. + + + The item to locate in the lifetime container. + + + Returns true if the object is contained in the lifetime + container; returns false otherwise. + + + + + Releases the resources used by the . + + + + + Releases the managed resources used by the DbDataReader and optionally releases the unmanaged resources. + + + true to release managed and unmanaged resources; false to release only unmanaged resources. + + + + + Returns an enumerator that iterates through the lifetime container. + + + An object that can be used to iterate through the life time container. + + + + + Returns an enumerator that iterates through the lifetime container. + + + An object that can be used to iterate through the life time container. + + + + + Removes an item from the lifetime container. The item is + not disposed. + + The item to be removed. + + + + Gets the number of references in the lifetime container + + + The number of references in the lifetime container + + + + + A custom collection over objects. + + + + + Removes an individual policy type for a build key. + + The type of policy to remove. + The key the policy applies. + + + + Removes all policies from the list. + + + + + Removes a default policy. + + The type the policy was registered as. + + + + Gets an individual policy. + + The interface the policy is registered under. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy list in the chain that the searched for policy was found in, null if the policy was + not found. + The policy in the list, if present; returns null otherwise. + + + + Get the non default policy. + + The interface the policy is registered under. + The key the policy applies to. + True if the search should be in the local policy list only; otherwise false to search up the parent chain. + The policy list in the chain that the searched for policy was found in, null if the policy was + not found. + The policy in the list if present; returns null otherwise. + + + + Sets an individual policy. + + The of the policy. + The policy to be registered. + The key the policy applies. + + + + Sets a default policy. When checking for a policy, if no specific individual policy + is available, the default will be used. + + The interface to register the policy under. + The default policy to be registered. + + + + A custom collection wrapper over objects. + + + + + Initialize a new instance of a class. + + + + + Initialize a new instance of a class with another policy list. + + An inner policy list to search. + + + + Removes an individual policy type for a build key. + + The type of policy to remove. + The key the policy applies. + + + + Removes all policies from the list. + + + + + Removes a default policy. + + The type the policy was registered as. + + + + Gets an individual policy. + + The interface the policy is registered under. + The key the policy applies. + true if the policy searches local only; otherwise false to seach up the parent chain. + The policy list in the chain that the searched for policy was found in, null if the policy was + not found. + The policy in the list, if present; returns null otherwise. + + + + Get the non default policy. + + The interface the policy is registered under. + The key the policy applies to. + True if the search should be in the local policy list only; otherwise false to search up the parent chain. + The policy list in the chain that the searched for policy was found in, null if the policy was + not found. + The policy in the list if present; returns null otherwise. + + + + Sets an individual policy. + + The of the policy. + The policy to be registered. + The key the policy applies. + + + + Sets a default policy. When checking for a policy, if no specific individual policy + is available, the default will be used. + + The interface to register the policy under. + The default policy to be registered. + + + + Gets the number of items in the locator. + + + The number of items in the locator. + + + + + An implementation of . + + + + + Add a new object to this + list. + + Object to add. + + + + Execute the method + of everything in the recovery list. Recoveries will execute + in the opposite order of add - it's a stack. + + + + + Return the number of recovery objects currently in the stack. + + + + + Implementation of which will notify an object about + the completion of a BuildUp operation, or start of a TearDown operation. + + + This strategy checks the object that is passing through the builder chain to see if it + implements IBuilderAware and if it does, it will call + and . This strategy is meant to be used from the + stage. + + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + Called during the chain of responsibility for a teardown operation. The + PreTearDown method is called when the chain is being executed in the + forward direction. + + Context of the teardown operation. + + + + Implemented on a class when it wants to receive notifications + about the build process. + + + + + Called by the when the object is being built up. + + The key of the object that was just built up. + + + + Called by the when the object is being torn down. + + + + + Enumeration to represent the object builder stages. + + + The order of the values in the enumeration is the order in which the stages are run. + + + + + Strategies in this stage run before creation. Typical work done in this stage might + include strategies that use reflection to set policies into the context that other + strategies would later use. + + + + + Strategies in this stage create objects. Typically you will only have a single policy-driven + creation strategy in this stage. + + + + + Strategies in this stage work on created objects. Typical work done in this stage might + include setter injection and method calls. + + + + + Strategies in this stage work on objects that are already initialized. Typical work done in + this stage might include looking to see if the object implements some notification interface + to discover when its initialization stage has been completed. + + + + + Represents a builder policy for mapping build keys. + + + + + Represents a builder policy for mapping build keys. + + + + + Maps the build key. + + The build key to map. + Current build context. Used for contextual information + if writing a more sophisticated mapping. This parameter can be null + (called when getting container registrations). + The new build key. + + + + Initialize a new instance of the with the new build key. + + The new build key. + + + + Maps the build key. + + The build key to map. + Current build context. Used for contextual information + if writing a more sophisticated mapping, unused in this implementation. + The new build key. + + + + Represents a strategy for mapping build keys in the build up operation. + + + + + Called during the chain of responsibility for a build operation. Looks for the + and if found maps the build key for the current operation. + + The context for the operation. + + + + An implementation of that can map + generic types. + + + + + Create a new instance + that will map generic types. + + Build key to map to. This must be or contain an open generic type. + + + + Maps the build key. + + The build key to map. + Current build context. Used for contextual information + if writing a more sophisticated mapping. + The new build key. + + + + A that will look for a build plan + in the current context. If it exists, it invokes it, otherwise + it creates one and stores it for later, and invokes it. + + + + + Called during the chain of responsibility for a build operation. + + The context for the operation. + + + + An implementation of that chooses + constructors based on these criteria: first, pick a constructor marked with the + attribute. If there + isn't one, then choose the constructor with the longest parameter list. If that is ambiguous, + then throw. + + Thrown when the constructor to choose is ambiguous. + Attribute used to mark the constructor to call. + + + + Base class that provides an implementation of + which lets you override how the parameter resolvers are created. + + + + + A that, when implemented, + will determine which constructor to call from the build plan. + + + + + Choose the constructor to call for the given type. + + Current build context + The to add any + generated resolver objects into. + The chosen constructor. + + + + Choose the constructor to call for the given type. + + Current build context + The to add any + generated resolver objects into. + The chosen constructor. + + + + Create a instance for the given + . + + Parameter to create the resolver for. + The resolver object. + + + + Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. + + + + Value Condition Less than zerox is less than y.Zerox equals y.Greater than zerox is greater than y. + + + The second object to compare. + The first object to compare. + + + + Create a instance for the given + . + + Parameter to create the resolver for. + The resolver object. + + + + Objects of this type are the return value from . + It encapsulates the desired with the string keys + needed to look up the for each + parameter. + + + + + Base class for return values from selector policies that + return a memberinfo of some sort plus a list of parameter + keys to look up the parameter resolvers. + + + + + Base class for return of selector policies that need + to keep track of a set of parameter keys. + + + + + Add a new parameter key to this object. Keys are assumed + to be in the order of the parameters to the constructor. + + Key for the next parameter to look up. + + + + The set of keys for the constructor parameters. + + + + + Construct a new , storing + the given member info. + + Member info to store. + + + + The member info stored. + + + + + Create a new instance which + contains the given constructor. + + The constructor to wrap. + + + + The constructor this object wraps. + + + + + This class records the information about which constructor argument is currently + being resolved, and is responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + The type that is being constructed. + A string representing the constructor being called. + Parameter being resolved. + + + + Generate the string describing what parameter was being resolved. + + The description string. + + + + String describing the constructor being set up. + + + + + Parameter that's being resolved. + + + + + A that emits IL to call constructors + as part of creating a build plan. + + + + + Called during the chain of responsibility for a build operation. + + Existing object is an instance of . + The context for the operation. + + + + A helper method used by the generated IL to throw an exception if + a dependency cannot be resolved. + + The currently being + used for the build of this object. + + + + A helper method used by the generated IL to throw an exception if + a dependency cannot be resolved because of an invalid constructor. + + The currently being + used for the build of this object. + The signature of the invalid constructor. + + + + A helper method used by the generated IL to throw an exception if + no existing object is present, but the user is attempting to build + an interface (usually due to the lack of a type mapping). + + The currently being + used for the build of this object. + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + A helper method used by the generated IL to set up a PerResolveLifetimeManager lifetime manager + if the current object is such. + + Current build context. + + + + A class that records that a constructor is about to be call, and is + responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + + + + Generate the description string. + + The string. + + + + Constructor we're trying to call. + + + + + An implementation of that will + check for full trust and if we're building a class or an interface. If in full + trust, attach to the class or module of the interface respectively. If in partial + trust, attach to the OB2 module instead. + + + + + This interface defines a policy that manages creation of the dynamic methods + used by the ObjectBuilder code generation. This way, we can replace the details + of how the dynamic method is created to handle differences in CLR (like Silverlight + vs desktop) or security policies. + + + + + Create a builder method for the given type, using the given name. + + Type that will be built by the generated method. + Name to give to the method. + A object with the proper signature to use + as part of a build plan. + + + + Create a builder method for the given type, using the given name. + + Type that will be built by the generated method. + Name to give to the method. + A object with the proper signature to use + as part of a build plan. + + + + This object tracks the current state of the build plan generation, + accumulates the IL, provides the preamble & postamble for the dynamic + method, and tracks things like local variables in the generated IL + so that they can be reused across IL generation strategies. + + + + + Create a that is initialized + to handle creation of a dynamic method to build the given type. + + Type that we're trying to create a build plan for. + An object that actually + creates our object. + + + + Completes generation of the dynamic method and returns the + generated dynamic method delegate. + + The created + + + + Emit the IL to put the build context on top of the IL stack. + + + + + Emit the IL to put the current build key on top of the IL stack. + + + + + Emit the IL to put the current "existing" object on the top of the IL stack. + + + + + Emit the IL to make the top of the IL stack our current "existing" object. + + + + + Emit the IL to load the given object onto the top of the IL stack. + + Type to load on the stack. + + + + Emit the IL needed to look up an and + call it to get a value. + + Type of the dependency to resolve. + Key to look up the policy by. + + + + Emit the IL needed to clear the . + + + + + Emit the IL needed to either cast the top of the stack to the target type + or unbox it, if it's a value type. + + Type to convert the top of the stack to. + + + + A helper method used by the generated IL to clear the current operation in the build context. + + + + + Helper method used by generated IL to look up a dependency resolver based on the given key. + + Current build context. + Type of the dependency being resolved. + Key the resolver was stored under. + The found dependency resolver. + + + + A reflection helper method to make it easier to grab a property getter + for the given property. + + Type that implements the property we want. + Type of the property. + Name of the property. + The property getter's . + + + + A reflection helper method that makes it easier to grab a + for a method. + + Type that implements the method we want. + Name of the method. + Types of arguments to the method. + The method's . + + + + The underlying that can be used to + emit IL into the generated dynamic method. + + + + + The type we're currently creating the method to build. + + + + + A delegate type that defines the signature of the + dynamic method created by the build plans. + + used to build up the object. + + + + An implementation of that runs the + given delegate to execute the plan. + + + + + An implementation + that constructs a build plan via dynamic IL emission. + + + + + A that can create and return an + for the given build key. + + + + + Create a build plan using the given context and build key. + + Current build context. + Current build key. + The build plan. + + + + Construct a that + uses the given strategy chain to construct the build plan. + + The strategy chain. + + + + Construct a build plan. + + The current build context. + The current build key. + The created build plan. + + + + A class that records that a constructor is about to be call, and is + responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + + + + Generate the description string. + + The string. + + + + Method we're trying to call. + + + + + This class records the information about which constructor argument is currently + being resolved, and is responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + The type that is being constructed. + A string representing the method being called. + Parameter being resolved. + + + + Generate the string describing what parameter was being resolved. + + The description string. + + + + String describing the method being set up. + + + + + Parameter that's being resolved. + + + + + A that generates IL to call + chosen methods (as specified by the current ) + as part of object build up. + + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + A base class that holds the information shared by all operations + performed by the container while setting properties. + + + + + Initializes a new instance of the class. + + + + + Generate the description of this operation. + + The string. + + + + Get a format string used to create the description. Called by + the base method. + + The format string. + + + + The property value currently being resolved. + + + + + This class records the information about which property value is currently + being resolved, and is responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + + + + Get a format string used to create the description. Called by + the base method. + + The format string. + + + + A that generates IL to resolve properties + on an object being built. + + + + + Called during the chain of responsibility for a build operation. + + The context for the operation. + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + A helper method used by the generated IL to store the current operation in the build context. + + + + + This class records the information about which property value is currently + being set, and is responsible for generating the error string required when + an error has occurred. + + + + + Initializes a new instance of the class. + + Type property is on. + Name of property being set. + + + + Get a format string used to create the description. Called by + the base method. + + The format string. + + + + Creates an instance of this build plan's type, or fills + in the existing type if passed in. + + Context used to build up the object. + + + + An that will examine the given + types and return a sequence of objects + that should be called as part of building the object. + + + + + Return the sequence of methods to call while building the target object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of methods to call. + + + + An implementation of that selects + methods by looking for the given + attribute on those methods. + + Type of attribute used to mark methods + to inject. + + + + Base class that provides an implementation of + which lets you override how the parameter resolvers are created. + + Attribute that marks methods that should + be called. + + + + Return the sequence of methods to call while building the target object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of methods to call. + + + + Create a instance for the given + . + + Parameter to create the resolver for. + The resolver object. + + + + Create a instance for the given + . + + Parameter to create the resolver for. + The resolver object. + + + + Objects of this type are the return value from . + It encapsulates the desired with the string keys + needed to look up the for each + parameter. + + + + + Create a new instance which + contains the given method. + + The method + + + + The constructor this object wraps. + + + + + An that returns a sequence + of properties that should be injected for the given type. + + + + + Returns sequence of properties on the given type that + should be set as part of building that object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of objects + that contain the properties to set. + + + + Base class that provides an implementation of + which lets you override how the parameter resolvers are created. + + + + + Returns sequence of properties on the given type that + should be set as part of building that object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of objects + that contain the properties to set. + + + + Create a for the given + property. + + Property to create resolver for. + The resolver object. + + + + An implementation of that looks + for properties marked with the + attribute that are also settable and not indexers. + + + + + + Create a for the given + property. + + Property to create resolver for. + The resolver object. + + + + Objects of this type are returned from + . + This class combines the about + the property with the string key used to look up the resolver + for this property's value. + + + + + Create an instance of + with the given and key. + + The property. + Key to use to look up the resolver. + + + + PropertyInfo for this property. + + + + + Key to look up this property's resolver. + + + + + Implementation of . + + + + + A builder policy that lets you keep track of the current + resolvers and will remove them from the given policy set. + + + + + Add a new resolver to track by key. + + Key that was used to add the resolver to the policy set. + + + + Remove the currently tracked resolvers from the given policy list. + + Policy list to remove the resolvers from. + + + + Add a new resolver to track by key. + + Key that was used to add the resolver to the policy set. + + + + Remove the currently tracked resolvers from the given policy list. + + Policy list to remove the resolvers from. + + + + Get an instance that implements , + either the current one in the policy set or creating a new one if it doesn't + exist. + + Policy list to look up from. + Build key to track. + The resolver tracker. + + + + Add a key to be tracked to the current tracker. + + Policy list containing the resolvers and trackers. + Build key for the resolvers being tracked. + Key for the resolver. + + + + Remove the resolvers for the given build key. + + Policy list containing the build key. + Build key. + + + + An implementation of that + calls back into the build chain to build up the dependency, passing + a type given at compile time as its build key. + + + + + Create a new instance storing the given type. + + Type to resolve. + + + + Get the value for a dependency. + + Current build context. + The value for the dependency. + + + + This interface defines a standard method to convert any + regardless + of the stage enum into a regular, flat strategy chain. + + + + + Convert this into + a flat . + + The flattened . + + + + Represents a chain of responsibility for builder strategies. + + + + + Reverse the order of the strategy chain. + + The reversed strategy chain. + + + + Execute this strategy chain against the given context, + calling the Buildup methods on the strategies. + + Context for the build process. + The build up object + + + + Execute this strategy chain against the given context, + calling the TearDown methods on the strategies. + + Context for the teardown process. + + + + A builder policy used to create lifetime policy instances. + Used by the LifetimeStrategy when instantiating open + generic types. + + + + + Create a new instance of . + + The new instance. + + + + The type of Lifetime manager that will be created by this factory. + + + + + An implementation that uses + a to figure out if an object + has already been created and to update or remove that + object from some backing store. + + + + + Called during the chain of responsibility for a build operation. The + PreBuildUp method is called when the chain is being executed in the + forward direction. + + Context of the build operation. + + + + Called during the chain of responsibility for a build operation. The + PostBuildUp method is called when the chain has finished the PreBuildUp + phase and executes in reverse order from the PreBuildUp calls. + + Context of the build operation. + + + + Represents a chain of responsibility for builder strategies partitioned by stages. + + The stage enumeration to partition the strategies. + + + + Initialize a new instance of the class. + + + + + Initialize a new instance of the class with an inner strategy chain to use when building. + + The inner strategy chain to use first when finding strategies in the build operation. + + + + Adds a strategy to the chain at a particular stage. + + The strategy to add to the chain. + The stage to add the strategy. + + + + Add a new strategy for the . + + The of + The stage to add the strategy. + + + + Clear the current strategy chain list. + + + This will not clear the inner strategy chain if this instane was created with one. + + + + + Makes a strategy chain based on this instance. + + A new . + + + + Represents a chain of responsibility for builder strategies. + + + + + Initialzie a new instance of the class. + + + + + Initialzie a new instance of the class with a colleciton of strategies. + + A collection of strategies to initialize the chain. + + + + Adds a strategy to the chain. + + The strategy to add to the chain. + + + + Adds strategies to the chain. + + The strategies to add to the chain. + + + + Reverse the order of the strategy chain. + + The reversed strategy chain. + + + + Execute this strategy chain against the given context to build up. + + Context for the build processes. + The build up object + + + + Execute this strategy chain against the given context, + calling the TearDown methods on the strategies. + + Context for the teardown process. + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + + An object that can be used to iterate through the collection. + + 2 + + + + Build key used to combine a type object with a string name. Used by + ObjectBuilder to indicate exactly what is being built. + + + + + Create a new instance with the given + type and name. + + to build. + Key to use to look up type mappings and singletons. + + + + Create a new instance for the default + buildup of the given type. + + to build. + + + + This helper method creates a new instance. It is + initialized for the default key for the given type. + + Type to build. + A new instance. + + + + This helper method creates a new instance for + the given type and key. + + Type to build + Key to use to look up type mappings and singletons. + A new instance initialized with the given type and name. + + + + Compare two instances. + + Two instances compare equal + if they contain the same name and the same type. Also, comparing + against a different type will also return false. + Object to compare to. + True if the two keys are equal, false if not. + + + + Calculate a hash code for this instance. + + A hash code. + + + + Compare two instances for equality. + + Two instances compare equal + if they contain the same name and the same type. + First of the two keys to compare. + Second of the two keys to compare. + True if the values of the keys are the same, else false. + + + + Compare two instances for inequality. + + Two instances compare equal + if they contain the same name and the same type. If either field differs + the keys are not equal. + First of the two keys to compare. + Second of the two keys to compare. + false if the values of the keys are the same, else true. + + + + Formats the build key as a string (primarily for debugging). + + A readable string representation of the build key. + + + + Return the stored in this build key. + + The type to build. + + + + Returns the name stored in this build key. + + The name to use when building. + + + + A generic version of so that + you can new up a key using generic syntax. + + Type for the key. + + + + Construct a new that + specifies the given type. + + + + + Construct a new that + specifies the given type and name. + + Name for the key. + + + + A series of helper methods to deal with sequences - + objects that implement . + + + + + A function that turns an arbitrary parameter list into an + . + + Type of arguments. + The items to put into the collection. + An array that contains the values of the . + + + + Given two sequences, return a new sequence containing the corresponding values + from each one. + + Type of first sequence. + Type of second sequence. + First sequence of items. + Second sequence of items. + New sequence of pairs. This sequence ends when the shorter of sequence1 and sequence2 does. + + + + The exception thrown by the Unity container when + an attempt to resolve a dependency fails. + + + The exception thrown by the Unity container when + an attempt to resolve a dependency fails. + + + + + Constructor to create a from serialized state. + + Serialization info + Serialization context + + + + Serialize this object into the given context. + + Serialization info + Streaming context + + + + Create a new that records + the exception for the given type and name. + + Type requested from the container. + Name requested from the container. + The actual exception that caused the failure of the build. + The build context representing the failed operation. + + + + The type that was being requested from the container at the time of failure. + + + + + The name that was being requested from the container at the time of failure. + + + + + A that lets you register a + delegate with the container to create an object, rather than calling + the object's constructor. + + + + + Base class for all extension objects. + + + + + The container calls this method when the extension is added. + + A instance that gives the + extension access to the internals of the container. + + + + Initial the container with this extension's functionality. + + + When overridden in a derived class, this method will modify the given + by adding strategies, policies, etc. to + install it's functions into the container. + + + + Removes the extension's functions from the container. + + + + This method is called when extensions are being removed from the container. It can be + used to do things like disconnect event handlers or clean up member state. You do not + need to remove strategies or policies here; the container will do that automatically. + + + The default implementation of this method does nothing. + + + + + The container this extension has been added to. + + The that this extension has been added to. + + + + The object used to manipulate + the inner state of the container. + + + + + Initialize this extension. This particular extension requires no + initialization work. + + + + + Register the given factory delegate to be called when the container is + asked to resolve and . + + Type that will be requested from the container. + The name that will be used when requesting to resolve this type. + Delegate to invoke to create the instance. + The container extension object this method was invoked on. + + + + Register the given factory delegate to be called when the container is + asked to resolve . + + Type that will be requested from the container. + Delegate to invoke to create the instance. + The container extension object this method was invoked on. + + + + An implementation of that + acts as a decorator over another . + This checks to see if the current type being built is the + right one before checking the inner . + + + + + Create an instance of + + Type to check for. + Inner override to check after type matches. + + + + Return a that can be used to give a value + for the given desired dependency. + + Current build context. + Type of dependency desired. + a object if this override applies, null if not. + + + + A convenience version of that lets you + specify the type to construct via generics syntax. + + Type to check for. + + + + Create an instance of . + + Inner override to check after type matches. + + + + Extension class that adds a set of convenience overloads to the + interface. + + + + + Register a type with specific members to be injected. + + Type this registration is for. + Container to configure. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container. + + + + This method is used to tell the container that when asked for type , + actually return an instance of type . This is very useful for + getting instances of interfaces. + + + This overload registers a default mapping and transient lifetime. + + + that will be requested. + that will actually be returned. + Container to configure. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container, where the created instances will use + the given . + + that will be requested. + that will actually be returned. + Container to configure. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container. + + + This method is used to tell the container that when asked for type , + actually return an instance of type . This is very useful for + getting instances of interfaces. + + that will be requested. + that will actually be returned. + Container to configure. + Name of this mapping. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container, where the created instances will use + the given . + + that will be requested. + that will actually be returned. + Container to configure. + Name to use for registration, null if a default registration. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type with the container. + No type mapping is performed for this type. + + The type to apply the to. + Container to configure. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type with the container. + No type mapping is performed for this type. + + The type to configure injection on. + Container to configure. + Name that will be used to request the type. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type and name with the container. + No type mapping is performed for this type. + + The type to apply the to. + Container to configure. + Name that will be used to request the type. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type with specific members to be injected. + + Container to configure. + Type this registration is for. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container. + + + + This method is used to tell the container that when asked for type , + actually return an instance of type . This is very useful for + getting instances of interfaces. + + + This overload registers a default mapping. + + + Container to configure. + that will be requested. + that will actually be returned. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container. + + + This method is used to tell the container that when asked for type , + actually return an instance of type . This is very useful for + getting instances of interfaces. + + Container to configure. + that will be requested. + that will actually be returned. + Name to use for registration, null if a default registration. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a type mapping with the container, where the created instances will use + the given . + + Container to configure. + that will be requested. + that will actually be returned. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type and name with the container. + No type mapping is performed for this type. + + Container to configure. + The to apply the to. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type and name with the container. + No type mapping is performed for this type. + + Container to configure. + The to configure in the container. + Name to use for registration, null if a default registration. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register a for the given type and name with the container. + No type mapping is performed for this type. + + Container to configure. + The to apply the to. + Name to use for registration, null if a default registration. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload does a default registration and has the container take over the lifetime of the instance. + + Type of instance to register (may be an implemented interface instead of the full type). + Container to configure. + Object to returned. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload does a default registration (name = null). + + + Type of instance to register (may be an implemented interface instead of the full type). + Container to configure. + Object to returned. + + object that controls how this instance will be managed by the container. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload automatically has the container take ownership of the . + + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + Container to configure. + Name for registration. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + Container to configure. + Name for registration. + + object that controls how this instance will be managed by the container. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload does a default registration and has the container take over the lifetime of the instance. + + Container to configure. + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload does a default registration (name = null). + + + Container to configure. + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + + object that controls how this instance will be managed by the container. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + This overload automatically has the container take ownership of the . + + Container to configure. + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + Name for registration. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Resolve an instance of the default requested type from the container. + + of object to get from the container. + Container to resolve from. + Any overrides for the resolve call. + The retrieved object. + + + + Resolve an instance of the requested type with the given name from the container. + + of object to get from the container. + Container to resolve from. + Name of the object to retrieve. + Any overrides for the resolve call. + The retrieved object. + + + + Resolve an instance of the default requested type from the container. + + Container to resolve from. + of object to get from the container. + Any overrides for the resolve call. + The retrieved object. + + + + Return instances of all registered types requested. + + + + This method is useful if you've registered multiple types with the same + but different names. + + + Be aware that this method does NOT return an instance for the default (unnamed) registration. + + + The type requested. + Container to resolve from. + Any overrides for the resolve calls. + Set of objects of type . + + + + Run an existing object through the container and perform injection on it. + + + + This method is useful when you don't control the construction of an + instance (ASP.NET pages or objects created via XAML, for instance) + but you still want properties and other injection performed. + + + This overload uses the default registrations. + + + of object to perform injection on. + Container to resolve through. + Instance to build up. + Any overrides for the buildup. + The resulting object. By default, this will be , but + container extensions may add things like automatic proxy creation which would + cause this to return a different object (but still type compatible with ). + + + + Run an existing object through the container and perform injection on it. + + + + This method is useful when you don't control the construction of an + instance (ASP.NET pages or objects created via XAML, for instance) + but you still want properties and other injection performed. + + of object to perform injection on. + Conatiner to resolve through. + Instance to build up. + name to use when looking up the typemappings and other configurations. + Any overrides for the Buildup. + The resulting object. By default, this will be , but + container extensions may add things like automatic proxy creation which would + cause this to return a different object (but still type compatible with ). + + + + Run an existing object through the container and perform injection on it. + + + + This method is useful when you don't control the construction of an + instance (ASP.NET pages or objects created via XAML, for instance) + but you still want properties and other injection performed. + + + This overload uses the default registrations. + + + Container to resolve through. + of object to perform injection on. + Instance to build up. + Any overrides for the Buildup. + The resulting object. By default, this will be , but + container extensions may add things like automatic proxy creation which would + cause this to return a different object (but still type compatible with ). + + + + Creates a new extension object and adds it to the container. + + Type of to add. The extension type + will be resolved from within the supplied . + Container to add the extension to. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Resolve access to a configuration interface exposed by an extension. + + Extensions can expose configuration interfaces as well as adding + strategies and policies to the container. This method walks the list of + added extensions and returns the first one that implements the requested type. + + The configuration interface required. + Container to configure. + The requested extension's configuration interface, or null if not found. + + + + Check if a particular type has been registered with the container with + the default name. + + Container to inspect. + Type to check registration for. + True if this type has been registered, false if not. + + + + Check if a particular type/name pair has been registered with the container. + + Container to inspect. + Type to check registration for. + Name to check registration for. + True if this type/name pair has been registered, false if not. + + + + Check if a particular type has been registered with the container with the default name. + + Type to check registration for. + Container to inspect. + True if this type has been registered, false if not. + + + + Check if a particular type/name pair has been registered with the container. + + Type to check registration for. + Container to inspect. + Name to check registration for. + True if this type/name pair has been registered, false if not. + + + + This extension installs the default strategies and policies into the container + to implement the standard behavior of the Unity container. + + + This extension installs the default strategies and policies into the container + to implement the standard behavior of the Unity container. + + + + + Add the correct to the policy + set. This version adds the appropriate policy for running on the desktop CLR. + + + + + Add the default ObjectBuilder strategies & policies to the container. + + + + + The class provides the means for extension objects + to manipulate the internal state of the . + + + + + Store a type/name pair for later resolution. + + + + When users register type mappings (or other things) with a named key, this method + allows you to register that name with the container so that when the + method is called, that name is included in the list that is returned. + + to register. + Name assocated with that type. + + + + The container that this context is associated with. + + The object. + + + + The strategies this container uses. + + The that the container uses to build objects. + + + + The strategies this container uses to construct build plans. + + The that this container uses when creating + build plans. + + + + The policies this container uses. + + The the that container uses to build objects. + + + + The that this container uses. + + The is used to manage objects that the container is managing. + + + + This event is raised when the method, + or one of its overloads, is called. + + + + + This event is raised when the method, + or one of its overloads, is called. + + + + + This event is raised when the method is called, providing + the newly created child container to extensions to act on as they see fit. + + + + + An EventArgs class that holds a string Name. + + + + + Create a new with a null name. + + + + + Create a new with the given name. + + Name to store. + + + + The name. + + Name used for this event arg object. + + + + Event argument class for the event. + + + + + Create a new instance of . + + Type to map from. + Type to map to. + Name for the registration. + to manage instances. + + + + Type to map from. + + + + + Type to map to. + + + + + to manage instances. + + + + + Event argument class for the event. + + + + + Create a default instance. + + + + + Create a instance initialized with the given arguments. + + Type of instance being registered. + The instance object itself. + Name to register under, null if default registration. + object that handles how + the instance will be owned. + + + + Type of instance being registered. + + + Type of instance being registered. + + + + + Instance object being registered. + + Instance object being registered + + + + that controls ownership of + this instance. + + + + + A that lets you specify that + an instance of a generic type parameter should be resolved. + + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + name to use when looking up in the container. + + + + Return a instance that will + return this types value for the parameter. + + The actual type to resolve. + The resolution key. + The . + + + + A that lets you specify that + an array containing the registered instances of a generic type parameter + should be resolved. + + + + + Create a new instance that specifies + that the given named generic parameter should be resolved. + + The generic parameter name to resolve. + The values for the elements, that will + be converted to objects. + + + + Test to see if this parameter value has a matching type for the given type. + + Type to check. + True if this parameter value is compatible with type , + false if not. + A type is considered compatible if it is an array type of rank one + and its element type is a generic type parameter with a name matching this generic + parameter name configured for the receiver. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + Name for the type represented by this . + This may be an actual type name or a generic argument name. + + + + + A Unity container extension that allows you to configure + which constructors, properties, and methods get injected + via an API rather than through attributes. + + + + + Initial the container with this extension's functionality. + + + When overridden in a derived class, this method will modify the given + by adding strategies, policies, etc. to + install it's functions into the container. + + + + API to configure the injection settings for a particular type. + + Type the injection is being configured for. + Objects containing the details on which members to inject and how. + This extension object. + + + + API to configure the injection settings for a particular type/name pair. + + Type the injection is being configured for. + Name of registration + Objects containing the details on which members to inject and how. + This extension object. + + + + API to configure the injection settings for a particular type. + + Type to configure. + Objects containing the details on which members to inject and how. + This extension object. + + + + API to configure the injection settings for a particular type/name pair. + + Type to configure. + Name of registration. + Objects containing the details on which members to inject and how. + This extension object. + + + + API to configure the injection settings for a particular type/name pair. + + Type of interface/base class being registered (may be null). + Type of actual implementation class being registered. + Name of registration. + Objects containing the details on which members to inject and how. + This extension object. + + + + A class that holds the collection of information + for a constructor, so that the container can + be configured to call this constructor. + + + + + Create a new instance of that looks + for a constructor with the given set of parameters. + + The values for the parameters, that will + be converted to objects. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Interface registered, ignored in this implementation. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + An that configures the + container to call a method as part of buildup. + + + + + Create a new instance which will configure + the container to call the given methods with the given parameters. + + Name of the method to call. + Parameter values for the method. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Type of interface registered, ignored in this implementation. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + A small function to handle name matching. You can override this + to do things like case insensitive comparisons. + + MethodInfo for the method you're checking. + Name of the method you're looking for. + True if a match, false if not. + + + + A class that holds on to the given value and provides + the required + when the container is configured. + + + + + Create an instance of that stores + the given value, using the runtime type of that value as the + type of the parameter. + + Value to be injected for this parameter. + + + + Create an instance of that stores + the given value, associated with the given type. + + Type of the parameter. + Value of the parameter + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + A generic version of that makes it a + little easier to specify the type of the parameter. + + Type of parameter. + + + + Create a new . + + Value for the parameter. + + + + This class stores information about which properties to inject, + and will configure the container accordingly. + + + + + Configure the container to inject the given property name, + resolving the value via the container. + + Name of the property to inject. + + + + Configure the container to inject the given property name, + using the value supplied. This value is converted to an + object using the + rules defined by the + method. + + Name of property to inject. + Value for property. + + + + Add policies to the to configure the + container to call this constructor with the appropriate parameter values. + + Interface being registered, ignored in this implemenation. + Type to register. + Name used to resolve the type object. + Policy list to add policies to. + + + + A class that stores a type, and generates a + resolver object that resolves all the named instances or the + type registered in a container. + + + + + Construct a new that + resolves to the given element type and collection of element values. + + The type of elements to resolve. + The values for the elements, that will + be converted to objects. + + + + Construct a new that + resolves to the given array and element types and collection of element values. + + The type for the array of elements to resolve. + The type of elements to resolve. + The values for the elements, that will + be converted to objects. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + A generic version of for convenience + when creating them by hand. + + Type of the elements for the array of the parameter. + + + + Construct a new that + resolves to the given element generic type with the given element values. + + The values for the elements, that will + be converted to objects. + + + + Interface defining the behavior of the Unity dependency injection container. + + + + + Register a type mapping with the container, where the created instances will use + the given . + + that will be requested. + that will actually be returned. + Name to use for registration, null if a default registration. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Register an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + Name for registration. + + object that controls how this instance will be managed by the container. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Resolve an instance of the requested type with the given name from the container. + + of object to get from the container. + Name of the object to retrieve. + Any overrides for the resolve call. + The retrieved object. + + + + Return instances of all registered types requested. + + + + This method is useful if you've registered multiple types with the same + but different names. + + + Be aware that this method does NOT return an instance for the default (unnamed) registration. + + + The type requested. + Any overrides for the resolve calls. + Set of objects of type . + + + + Run an existing object through the container and perform injection on it. + + + + This method is useful when you don't control the construction of an + instance (ASP.NET pages or objects created via XAML, for instance) + but you still want properties and other injection performed. + + of object to perform injection on. + Instance to build up. + name to use when looking up the typemappings and other configurations. + Any overrides for the resolve calls. + The resulting object. By default, this will be , but + container extensions may add things like automatic proxy creation which would + cause this to return a different object (but still type compatible with ). + + + + Run an existing object through the container, and clean it up. + + The object to tear down. + + + + Add an extension object to the container. + + to add. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Resolve access to a configuration interface exposed by an extension. + + Extensions can expose configuration interfaces as well as adding + strategies and policies to the container. This method walks the list of + added extensions and returns the first one that implements the requested type. + + of configuration interface required. + The requested extension's configuration interface, or null if not found. + + + + Remove all installed extensions from this container. + + + + This method removes all extensions from the container, including the default ones + that implement the out-of-the-box behavior. After this method, if you want to use + the container again you will need to either readd the default extensions or replace + them with your own. + + + The registered instances and singletons that have already been set up in this container + do not get removed. + + + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Create a child container. + + + A child container shares the parent's configuration, but can be configured with different + settings or lifetime. + The new child container. + + + + The parent of this container. + + The parent container, or null if this container doesn't have one. + + + + Get a sequence of that describe the current state + of the container. + + + + + A that holds a weak reference to + it's managed instance. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + + + + An implementation of that + creates instances of the type of the given Lifetime Manager + by resolving them through the container. + + + + + Create a new that will + return instances of the given type, creating them by + resolving through the container. + + Container to resolve with. + Type of LifetimeManager to create. + + + + Create a new instance of . + + The new instance. + + + + The type of Lifetime manager that will be created by this factory. + + + + + A that holds the instances given to it, + keeping one instance per thread. + + + + This LifetimeManager does not dispose the instances it holds. + + + + + + Initializes a new instance of the class. + + + + + Retrieve a value from the backing store associated with this Lifetime policy for the + current thread. + + the object desired, or if no such object is currently + stored for the current thread. + + + + Stores the given value into backing store for retrieval later when requested + in the current thread. + + The object being stored. + + + + Remove the given object from backing store. + + Not implemented for this lifetime manager. + + + + An implementation that does nothing, + thus ensuring that instances are created new every time. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + + + + This strategy implements the logic that will call container.ResolveAll + when an array parameter is detected. + + + + + Do the PreBuildUp stage of construction. This is where the actual work is performed. + + Current build context. + + + + An implementation of that is + aware of the build keys used by the Unity container. + + + + + Create a instance for the given + . + + + This implementation looks for the Unity on the + parameter and uses it to create an instance of + for this parameter. + Parameter to create the resolver for. + The resolver object. + + + + An implementation of that is aware + of the build keys used by the Unity container. + + + + + Create a instance for the given + . + + Parameter to create the resolver for. + The resolver object. + + + + An implementation of that is aware of + the build keys used by the unity container. + + + + + Create a for the given + property. + + Property to create resolver for. + The resolver object. + + + + A implementation that returns + the value set in the constructor. + + + + + Create a new instance of + which will return the given value when resolved. + + The value to return. + + + + Get the value for a dependency. + + Current build context. + The value for the dependency. + + + + An implementation of that stores a + type and name, and at resolution time puts them together into a + . + + + + + Create an instance of + with the given type and name. + + The type. + The name (may be null). + + + + Resolve the value for a dependency. + + Current build context. + The value for the dependency. + + + + The type that this resolver resolves. + + + + + The name that this resolver resolves. + + + + + An implementation of that resolves to + to an array populated with the values that result from resolving other instances + of . + + + + + Create an instance of + with the given type and a collection of + instances to use when populating the result. + + The type. + The resolver policies to use when populating an array. + + + + Resolve the value for a dependency. + + Current build context. + An array pupulated with the results of resolving the resolver policies. + + + + An implementation of that selects + the given constructor and creates the appropriate resolvers to call it with + the specified parameters. + + + + + Create an instance of that + will return the given constructor, being passed the given injection values + as parameters. + + The constructor to call. + Set of objects + that describes how to obtain the values for the constructor parameters. + + + + Choose the constructor to call for the given type. + + Current build context + The to add any + generated resolver objects into. + The chosen constructor. + + + + Helper class for implementing selector policies that need to + set up dependency resolver policies. + + + + + Add dependency resolvers to the parameter set. + + Type that's currently being built (used to resolve open generics). + PolicyList to add the resolvers to. + Objects supplying the dependency resolvers. + Result object to store the keys in. + + + + A implementation that calls the specific + methods with the given parameters. + + + + + Add the given method and parameter collection to the list of methods + that will be returned when the selector's + method is called. + + Method to call. + sequence of objects + that describe how to create the method parameter values. + + + + Return the sequence of methods to call while building the target object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of methods to call. + + + + An implemnetation of which returns + the set of specific properties that the selector was configured with. + + + + + Add a property that will be par of the set returned when the + is called. + + The property to set. + object describing + how to create the value to inject. + + + + Returns sequence of properties on the given type that + should be set as part of building that object. + + Current build context. + The to add any + generated resolver objects into. + Sequence of objects + that contain the properties to set. + + + + A class that stores a name and type, and generates a + resolver object that resolves the parameter via the + container. + + + + + Construct a new that + resolves to the given type. + + Type of this parameter. + + + + Construct a new that + resolves the given type and name. + + Type of this parameter. + Name to use when resolving parameter. + + + + Return a instance that will + return this types value for the parameter. + + Type that contains the member that needs this parameter. Used + to resolve open generic parameters. + The . + + + + A generic version of for convenience + when creating them by hand. + + Type of the parameter + + + + Create a new for the given + generic type and the default name. + + + + + Create a new for the given + generic type and name. + + Name to use to resolve this parameter. + + + + An implementation of that wraps a Unity container. + + + + + Initializes a new instance of the class for a container. + + The to wrap with the + interface implementation. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + When implemented by inheriting classes, this method will do the actual work of resolving + the requested service instance. + + Type of instance requested.Name of registered service you want. May be null. + + The requested service instance. + + + + + When implemented by inheriting classes, this method will do the actual work of + resolving all the requested service instances. + + Type of service requested. + + Sequence of service instance objects. + + + + + A static helper class that includes various parameter checking routines. + + + + + Throws if the given argument is null. + + if tested value if null. + Argument value to test. + Name of the argument being tested. + + + + Throws an exception if the tested string argument is null or the empty string. + + Thrown if string value is null. + Thrown if the string is empty + Argument value to check. + Name of argument being checked. + + + + Verifies that an argument type is assignable from the provided type (meaning + interfaces are implemented, or classes exist in the base class hierarchy). + + The argument type that will be assigned to. + The type of the value being assigned. + Argument name. + + + + Verifies that an argument instance is assignable from the provided type (meaning + interfaces are implemented, or classes exist in the base class hierarchy, or instance can be + assigned through a runtime wrapper, as is the case for COM Objects). + + The argument type that will be assigned to. + The instance that will be assigned. + Argument name. + + + + The build stages we use in the Unity container + strategy pipeline. + + + + + First stage. By default, nothing happens here. + + + + + Second stage. Type mapping occurs here. + + + + + Third stage. lifetime managers are checked here, + and if they're available the rest of the pipeline is skipped. + + + + + Fourth stage. Reflection over constructors, properties, etc. is + performed here. + + + + + Fifth stage. Instance creation happens here. + + + + + Sixth stage. Property sets and method injection happens here. + + + + + Seventh and final stage. By default, nothing happens here. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The type {0} has multiple constructors of length {1}. Unable to disambiguate.. + + + + + Looks up a localized string similar to The provided string argument must not be empty.. + + + + + Looks up a localized string similar to The current build operation (build key {2}) failed: {3} (Strategy type {0}, index {1}). + + + + + Looks up a localized string similar to The current type, {0}, is an interface and cannot be constructed. Are you missing a type mapping?. + + + + + Looks up a localized string similar to Cannot extract type from build key {0}.. + + + + + Looks up a localized string similar to The method {0}.{1}({2}) is an open generic method. Open generic methods cannot be injected.. + + + + + Looks up a localized string similar to The property {0} on type {1} is an indexer. Indexed properties cannot be injected.. + + + + + Looks up a localized string similar to The method {1} on type {0} has an out parameter. Injection cannot be performed.. + + + + + Looks up a localized string similar to The method {0}.{1}({2}) has at least one out parameter. Methods with out parameters cannot be injected.. + + + + + Looks up a localized string similar to The method {0}.{1}({2}) has at least one ref parameter.Methods with ref parameters cannot be injected.. + + + + + Looks up a localized string similar to The method {1} on type {0} is marked for injection, but it is an open generic method. Injection cannot be performed.. + + + + + Looks up a localized string similar to The method {0}.{1}({2}) is static. Static methods cannot be injected.. + + + + + Looks up a localized string similar to The type {0} is an open generic type. An open generic type cannot be resolved.. + + + + + Looks up a localized string similar to Resolving parameter "{0}" of constructor {1}. + + + + + Looks up a localized string similar to The parameter {0} could not be resolved when attempting to call constructor {1}.. + + + + + Looks up a localized string similar to Parameter type inference does not work for null values. Indicate the parameter type explicitly using a properly configured instance of the InjectionParameter or InjectionParameter<T> classes.. + + + + + Looks up a localized string similar to Calling constructor {0}. + + + + + Looks up a localized string similar to Calling method {0}.{1}. + + + + + Looks up a localized string similar to An item with the given key is already present in the dictionary.. + + + + + Looks up a localized string similar to The lifetime manager is already registered. Lifetime managers cannot be reused, please create a new one.. + + + + + Looks up a localized string similar to The override marker build plan policy has been invoked. This should never happen, looks like a bug in the container.. + + + + + Looks up a localized string similar to Resolving parameter "{0}" of method {1}.{2}. + + + + + Looks up a localized string similar to The value for parameter "{1}" of method {0} could not be resolved. . + + + + + Looks up a localized string similar to Could not resolve dependency for build key {0}.. + + + + + Looks up a localized string similar to The type {0} has multiple constructors marked with the InjectionConstructor attribute. Unable to disambiguate.. + + + + + Looks up a localized string similar to The supplied type {0} must be an open generic type.. + + + + + Looks up a localized string similar to The supplied type {0} does not have the same number of generic arguments as the target type {1}.. + + + + + Looks up a localized string similar to The type {0} does not have an accessible constructor.. + + + + + Looks up a localized string similar to The type {0} does not have a generic argument named "{1}". + + + + + Looks up a localized string similar to while resolving. + + + + + Looks up a localized string similar to The type {0} does not have a constructor that takes the parameters ({1}).. + + + + + Looks up a localized string similar to The type {0} does not have a public method named {1} that takes the parameters ({2}).. + + + + + Looks up a localized string similar to The type {0} does not contain an instance property named {1}.. + + + + + Looks up a localized string similar to The type {0} is not a generic type, and you are attempting to inject a generic parameter named "{1}".. + + + + + Looks up a localized string similar to The type {0} is not an array type with rank 1, and you are attempting to use a [DependencyArray] attribute on a parameter or property with this type.. + + + + + Looks up a localized string similar to Optional dependencies must be reference types. The type {0} is a value type.. + + + + + Looks up a localized string similar to The property {0} on type {1} is not settable.. + + + + + Looks up a localized string similar to The property {0} on type {1} is of type {2}, and cannot be injected with a value of type {3}.. + + + + + Looks up a localized string similar to The value for the property "{0}" could not be resolved.. + + + + + Looks up a localized string similar to The provided string argument must not be empty.. + + + + + Looks up a localized string similar to Resolution of the dependency failed, type = "{0}", name = "{1}". + Exception occurred while: {2}. + Exception is: {3} - {4} + ----------------------------------------------- + At the time of the exception, the container was: + . + + + + + Looks up a localized string similar to Resolving {0},{1}. + + + + + Looks up a localized string similar to Resolving {0},{1} (mapped from {2}, {3}). + + + + + Looks up a localized string similar to Resolving value for property {0}.{1}. + + + + + Looks up a localized string similar to The constructor {1} selected for type {0} has ref or out parameters. Such parameters are not supported for constructor injection.. + + + + + Looks up a localized string similar to Setting value for property {0}.{1}. + + + + + Looks up a localized string similar to The type {0} cannot be constructed. You must configure the container to supply this value.. + + + + + Looks up a localized string similar to The type {1} cannot be assigned to variables of type {0}.. + + + + + Looks up a localized string similar to <unknown>. + + + + + A simple, extensible dependency injection container. + + + + + Create a default . + + + + + Create a with the given parent container. + + The parent . The current object + will apply its own settings first, and then check the parent for additional ones. + + + + RegisterType a type mapping with the container, where the created instances will use + the given . + + that will be requested. + that will actually be returned. + Name to use for registration, null if a default registration. + The that controls the lifetime + of the returned instance. + Injection configuration objects. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + RegisterType an instance with the container. + + + + Instance registration is much like setting a type as a singleton, except that instead + of the container creating the instance the first time it is requested, the user + creates the instance ahead of type and adds that instance to the container. + + + Type of instance to register (may be an implemented interface instead of the full type). + Object to returned. + Name for registration. + + If true, the container will take over the lifetime of the instance, + calling Dispose on it (if it's ) when the container is Disposed. + + If false, container will not maintain a strong reference to . User is reponsible + for disposing instance, and for keeping the instance from being garbage collected. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Get an instance of the requested type with the given name from the container. + + of object to get from the container. + Name of the object to retrieve. + Any overrides for the resolve call. + The retrieved object. + + + + Return instances of all registered types requested. + + + + This method is useful if you've registered multiple types with the same + but different names. + + + Be aware that this method does NOT return an instance for the default (unnamed) registration. + + + The type requested. + Any overrides for the resolve calls. + Set of objects of type . + + + + Run an existing object through the container and perform injection on it. + + + + This method is useful when you don't control the construction of an + instance (ASP.NET pages or objects created via XAML, for instance) + but you still want properties and other injection performed. + + of object to perform injection on. + Instance to build up. + name to use when looking up the typemappings and other configurations. + Any overrides for the buildup. + The resulting object. By default, this will be , but + container extensions may add things like automatic proxy creation which would + cause this to return a different object (but still type compatible with ). + + + + Run an existing object through the container, and clean it up. + + The object to tear down. + + + + Add an extension object to the container. + + to add. + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Get access to a configuration interface exposed by an extension. + + Extensions can expose configuration interfaces as well as adding + strategies and policies to the container. This method walks the list of + added extensions and returns the first one that implements the requested type. + + of configuration interface required. + The requested extension's configuration interface, or null if not found. + + + + Remove all installed extensions from this container. + + + + This method removes all extensions from the container, including the default ones + that implement the out-of-the-box behavior. After this method, if you want to use + the container again you will need to either readd the default extensions or replace + them with your own. + + + The registered instances and singletons that have already been set up in this container + do not get removed. + + + The object that this method was called on (this in C#, Me in Visual Basic). + + + + Create a child container. + + + A child container shares the parent's configuration, but can be configured with different + settings or lifetime. + The new child container. + + + + Dispose this container instance. + + + Disposing the container also disposes any child containers, + and disposes any instances whose lifetimes are managed + by the container. + + + + + Dispose this container instance. + + + This class doesn't have a finalizer, so will always be true. + True if being called from the IDisposable.Dispose + method, false if being called from a finalizer. + + + + Remove policies associated with building this type. This removes the + compiled build plan so that it can be rebuilt with the new settings + the next time this type is resolved. + + Type of object to clear the plan for. + Name the object is being registered with. + + + + The parent of this container. + + The parent container, or null if this container doesn't have one. + + + + Get a sequence of that describe the current state + of the container. + + + + + Implementation of the ExtensionContext that is actually used + by the UnityContainer implementation. + + + This is a nested class so that it can access state in the + container that would otherwise be inaccessible. + + + + + This event is raised when the method, + or one of its overloads, is called. + + + + + This extension supplies the default behavior of the UnityContainer API + by handling the context events and setting policies. + + + + + Install the default container behavior into the container. + + + + + Remove the default behavior from the container. + + + + + Helper class to wrap common reflection stuff dealing with + methods. + + + + + Create a new instance that + lets us do more reflection stuff on that method. + + The method to reflect on. + + + + Given our set of generic type arguments, + + The generic type arguments. + An array with closed parameter types. + + + + Returns true if any of the parameters of this method + are open generics. + + + + + Return the of each parameter for this + method. + + Sequence of objects, one for + each parameter in order. + + + + A helper class that encapsulates two different + data items together into a a single item. + + + + + Create a new containing + the two values give. + + First value + Second value + + + + The first value of the pair. + + + + + The second value of the pair. + + + + + Container for a Pair helper method. + + + + + A helper factory method that lets users take advantage of type inference. + + Type of first value. + Type of second value. + First value. + Second value. + A new instance. + + + + A utility class that handles the logic of matching parameter + lists, so we can find the right constructor and method overloads. + + + + + Create a new that will attempt to + match the given parameter types. + + Target parameters to match against. + + + + Tests to see if the given set of types matches the ones + we're looking for. + + parameter list to look for. + true if they match, false if they don't. + + + + Tests to see if the given set of types matches the ones we're looking for. + + Candidate method signature to look for. + True if they match, false if they don't. + + + + Another reflection helper class that has extra methods + for dealing with ParameterInfos. + + + + + A small helper class to encapsulate details of the + reflection API, particularly around generics. + + + + + Create a new instance that + lets you look at information about the given type. + + Type to do reflection on. + + + + Test the given object, looking at + the parameters. Determine if any of the parameters are + open generic types that need type attributes filled in. + + The method to check. + True if any of the parameters are open generics. False if not. + + + + If this type is an open generic, use the + given array to + determine what the required closed type is and return that. + + If the parameter is not an open type, just + return this parameter's type. + Type arguments to substitute in for + the open type parameters. + Corresponding closed type of this parameter. + + + + Given a generic argument name, return the corresponding type for this + closed type. For example, if the current type is SomeType<User>, and the + corresponding definition was SomeType<TSomething>, calling this method + and passing "TSomething" will return typeof(User). + + Name of the generic parameter. + Type of the corresponding generic parameter, or null if there + is no matching name. + + + + The object we're reflecting over. + + + + + Is this type generic? + + + + + Is this type an open generic (no type parameter specified) + + + + + Is this type an array type? + + + + + Is this type an array of generic elements? + + + + + The type of the elements in this type (if it's an array). + + + + + Create a new instance of that + lets you query information about the given ParameterInfo object. + + Parameter to query. + + + + A set of helper methods to pick through lambdas and pull out + from them. + + + + + Pull out a object from an expression of the form + () => SomeClass.SomeMethod() + + Expression describing the method to call. + Corresponding . + + + + Pull out a object from an expression of the form + x => x.SomeMethod() + + The type where the method is defined. + Expression describing the method to call. + Corresponding . + + + + Pull out a object for the get method from an expression of the form + x => x.SomeProperty + + The type where the method is defined. + The type for the property. + Expression describing the property for which the get method is to be extracted. + Corresponding . + + + + Pull out a object for the set method from an expression of the form + x => x.SomeProperty + + The type where the method is defined. + The type for the property. + Expression describing the property for which the set method is to be extracted. + Corresponding . + + + + Pull out a object from an expression of the form () => new SomeType() + + The type where the constructor is defined. + Expression invoking the desired constructor. + Corresponding . + + +