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.