diff --git a/libs/Castle.Core.dll b/libs/Castle.Core.dll
new file mode 100644
index 0000000..0207bae
Binary files /dev/null and b/libs/Castle.Core.dll differ
diff --git a/libs/Castle.Core.xml b/libs/Castle.Core.xml
new file mode 100644
index 0000000..d62ea04
--- /dev/null
+++ b/libs/Castle.Core.xml
@@ -0,0 +1,4927 @@
+
+
+
+ Castle.Core
+
+
+
+
+ Assignes a specific dictionary key.
+
+
+
+
+ Defines the contract for customizing dictionary access.
+
+
+
+
+ Determines relative order to apply related behaviors.
+
+
+
+
+ Determines relative order to apply related behaviors.
+
+
+
+
+ Defines the contract for updating dictionary values.
+
+
+
+
+ Sets the stored dictionary value.
+
+ The dictionary adapter.
+ The key.
+ The stored value.
+ The property.
+ true if the property should be stored.
+
+
+
+ Defines the contract for building s.
+
+
+
+
+ Builds the dictionary behaviors.
+
+
+
+
+
+ Abstract adapter for the support
+ needed by the
+
+
+
+
+ Adds an element with the provided key and value to the object.
+
+ The to use as the key of the element to add.
+ The to use as the value of the element to add.
+ An element with the same key already exists in the object.
+ key is null.
+ The is read-only.-or- The has a fixed size.
+
+
+
+ Removes all elements from the object.
+
+ The object is read-only.
+
+
+
+ Determines whether the object contains an element with the specified key.
+
+ The key to locate in the object.
+
+ true if the contains an element with the key; otherwise, false.
+
+ key is null.
+
+
+
+ Returns an object for the object.
+
+
+ An object for the object.
+
+
+
+
+ Removes the element with the specified key from the object.
+
+ The key of the element to remove.
+ The object is read-only.-or- The has a fixed size.
+ key is null.
+
+
+
+ Copies the elements of the to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing.
+ The zero-based index in array at which copying begins.
+ array is null.
+ The type of the source cannot be cast automatically to the type of the destination array.
+ index is less than zero.
+ array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array.
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets a value indicating whether the object has a fixed size.
+
+
+ true if the object has a fixed size; otherwise, false.
+
+
+
+ Gets a value indicating whether the object is read-only.
+
+
+ true if the object is read-only; otherwise, false.
+
+
+
+ Gets an object containing the keys of the object.
+
+
+ An object containing the keys of the object.
+
+
+
+ Gets an object containing the values in the object.
+
+
+ An object containing the values in the object.
+
+
+
+ Gets or sets the with the specified key.
+
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+ The number of elements contained in the .
+
+
+
+ Gets a value indicating whether access to the is synchronized (thread safe).
+
+
+ true if access to the is synchronized (thread safe); otherwise, false.
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+ An object that can be used to synchronize access to the .
+
+
+
+ Constant to use when making assembly internals visible to Castle.Core
+ [assembly: InternalsVisibleTo(CoreInternalsVisible.ToCastleCore)]
+
+
+
+
+ Constant to use when making assembly internals visible to proxy types generated by DynamicProxy. Required when proxying internal types.
+ [assembly: InternalsVisibleTo(CoreInternalsVisible.ToDynamicProxyGenAssembly2)]
+
+
+
+
+ Abstract implementation of .
+
+
+
+
+ Conract for traversing a .
+
+
+
+
+ Identifies a property should be represented as a nested component.
+
+
+
+
+ Defines the contract for building typed dictionary keys.
+
+
+
+
+ Builds the specified key.
+
+ The dictionary adapter.
+ The current key.
+ The property.
+ The updated key
+
+
+
+ Defines the contract for retrieving dictionary values.
+
+
+
+
+ Gets the effective dictionary value.
+
+ The dictionary adapter.
+ The key.
+ The stored value.
+ The property.
+ true if return only existing.
+ The effective property value.
+
+
+
+ Applies no prefix.
+
+
+
+
+ Gets or sets the prefix.
+
+ The prefix.
+
+
+
+ Identifies the dictionary adapter types.
+
+
+
+
+ Identifies an interface or property to be pre-feteched.
+
+
+
+
+ Instructs fetching to occur.
+
+
+
+
+ Instructs fetching according to
+
+
+
+
+
+ Gets whether or not fetching should occur.
+
+
+
+
+ Assigns a property to a group.
+
+
+
+
+ Constructs a group assignment.
+
+ The group name.
+
+
+
+ Constructs a group assignment.
+
+ The group name.
+
+
+
+ Gets the group the property is assigned to.
+
+
+
+
+ Assigns a specific dictionary key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+
+
+
+ Initializes a new instance of the class.
+
+ The compound key.
+
+
+
+ Assigns a prefix to the keyed properties of an interface.
+
+
+
+
+ Initializes a default instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The prefix for the keyed properties of the interface.
+
+
+
+ Gets the prefix key added to the properties of the interface.
+
+
+
+
+ Substitutes part of key with another string.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The old value.
+ The new value.
+
+
+
+ Requests support for multi-level editing.
+
+
+
+
+ Contract for dictionary initialization.
+
+
+
+
+ Performs any initialization of the
+
+ The dictionary adapter.
+ The dictionary behaviors.
+
+
+
+ Generates a new GUID on demand.
+
+
+
+
+ Support for on-demand value resolution.
+
+
+
+
+ Suppress property change notifications.
+
+
+
+
+ Provides simple string formatting from existing properties.
+
+
+
+
+ Gets the string format.
+
+
+
+
+ Gets the format properties.
+
+
+
+
+ Identifies a property should be represented as a delimited string value.
+
+
+
+
+ Gets the separator.
+
+
+
+
+ Converts all properties to strings.
+
+
+
+
+ Gets or sets the format.
+
+ The format.
+
+
+
+ Suppress property change notifications.
+
+
+
+
+ Contract for property descriptor initialization.
+
+
+
+
+ Performs any initialization of the
+
+ The property descriptor.
+ The property behaviors.
+
+
+
+ Assigns a prefix to the keyed properties using the interface name.
+
+
+
+
+ Manages conversion between property values.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The converter.
+
+
+
+ Gets the effective dictionary value.
+
+ The dictionary adapter.
+ The key.
+ The stored value.
+ The property.
+ true if return only existing.
+ The effective property value.
+
+
+
+
+
+
+
+
+ Contract for creating additional Dictionary adapters.
+
+
+
+
+ Contract for manipulating the Dictionary adapter.
+
+
+
+
+ Contract for editing the Dictionary adapter.
+
+
+
+
+ Contract for managing Dictionary adapter notifications.
+
+
+
+
+ Contract for validating Dictionary adapter.
+
+
+
+
+ Uses Reflection.Emit to expose the properties of a dictionary
+ through a dynamic implementation of a typed interface.
+
+
+
+
+ Defines the contract for building typed dictionary adapters.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the dictionary.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the dictionary.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ The property descriptor.
+ An implementation of the typed interface bound to the dictionary.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the namedValues.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the namedValues.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the xpath navigable.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets a typed adapter bound to the .
+
+ The typed interface.
+ The underlying source of properties.
+ An implementation of the typed interface bound to the xpath navigable.
+
+ The type represented by T must be an interface with properties.
+
+
+
+
+ Gets the associated with the type.
+
+ The typed interface.
+ The adapter meta-data.
+
+
+
+ Gets the associated with the type.
+
+ The typed interface.
+ The property descriptor.
+ The adapter meta-data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a dictionary property.
+
+
+
+
+ Initializes an empty class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The property.
+ The property behaviors.
+
+
+
+ Copies an existinginstance of the class.
+
+
+
+
+
+
+ Gets the key.
+
+ The dictionary adapter.
+ The key.
+ The descriptor.
+
+
+
+
+ Adds the key builder.
+
+ The builder.
+
+
+
+ Adds the key builders.
+
+ The builders.
+
+
+
+ Copies the key builders to the other
+
+
+
+
+
+
+ Copies the selected key builders to the other
+
+
+
+
+
+
+
+ Gets the property value.
+
+ The dictionary adapter.
+ The key.
+ The stored value.
+ The descriptor.
+ true if return only existing.
+
+
+
+
+ Adds the dictionary getter.
+
+ The getter.
+
+
+
+ Adds the dictionary getters.
+
+ The getters.
+
+
+
+ Copies the property getters to the other
+
+
+
+
+
+
+ Copies the selected property getters to the other
+
+
+
+
+
+
+
+ Sets the property value.
+
+ The dictionary adapter.
+ The key.
+ The value.
+ The descriptor.
+
+
+
+
+ Adds the dictionary setter.
+
+ The setter.
+
+
+
+ Adds the dictionary setters.
+
+ The setters.
+
+
+
+ Copies the property setters to the other
+
+
+
+
+
+
+ Copies the selected property setters to the other
+
+
+
+
+
+
+
+ Adds the behaviors.
+
+
+
+
+
+
+ Adds the behaviors.
+
+
+
+
+
+
+ Adds the behaviors from the builders.
+
+
+
+
+
+
+ Copies the behaviors to the other
+
+
+
+
+
+
+ Copies the behaviors to the other
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the property name.
+
+
+
+
+ Gets the property type.
+
+
+
+
+ Gets the property.
+
+ The property.
+
+
+
+ Returns true if the property is dynamic.
+
+
+
+
+ Gets additional state.
+
+
+
+
+ Determines if property should be fetched.
+
+
+
+
+ Determines if notifications should occur.
+
+
+
+
+ Gets the property behaviors.
+
+
+
+
+ Gets the type converter.
+
+ The type converter.
+
+
+
+ Gets the key builders.
+
+ The key builders.
+
+
+
+ Gets the setter.
+
+ The setter.
+
+
+
+ Gets the getter.
+
+ The getter.
+
+
+
+ Adds the dictionary initializers.
+
+ The initializers.
+
+
+
+ Adds the dictionary initializers.
+
+ The initializers.
+
+
+
+ Copies the initializers to the other
+
+
+
+
+
+
+ Copies the filtered initializers to the other
+
+
+
+
+
+
+
+ Adds the dictionary meta-data initializers.
+
+ The meta-data initializers.
+
+
+
+ Adds the dictionary meta-data initializers.
+
+ The meta-data initializers.
+
+
+
+ Copies the meta-initializers to the other
+
+
+
+
+
+
+ Copies the filtered meta-initializers to the other
+
+
+
+
+
+
+
+ Gets the initializers.
+
+ The initializers.
+
+
+
+ Gets the meta-data initializers.
+
+ The meta-data initializers.
+
+
+
+ Contract for dictionary meta-data initialization.
+
+
+
+
+ Performs any initialization of the dictionary adapter meta-data.
+
+ The dictionary adapter factory.
+ The dictionary adapter meta.
+
+
+
+
+ Contract for dictionary validation.
+
+
+
+
+ Determines if is valid.
+
+ The dictionary adapter.
+ true if valid.
+
+
+
+ Validates the .
+
+ The dictionary adapter.
+ The error summary information.
+
+
+
+ Validates the for a property.
+
+ The dictionary adapter.
+ The property to validate.
+ The property summary information.
+
+
+
+ Invalidates any results cached by the validator.
+
+ The dictionary adapter.
+
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name values.
+
+
+
+ Determines whether the object contains an element with the specified key.
+
+ The key to locate in the object.
+
+ true if the contains an element with the key; otherwise, false.
+
+ key is null.
+
+
+
+ Adapts the specified name values.
+
+ The name values.
+
+
+
+
+ Gets a value indicating whether the object is read-only.
+
+
+ true if the object is read-only; otherwise, false.
+
+
+
+ Gets or sets the with the specified key.
+
+
+
+
+
+ Helper class for retrieving attributes.
+
+
+
+
+ Gets the attribute.
+
+ The member.
+ The member attribute.
+
+
+
+ Gets the attributes. Does not consider inherited attributes!
+
+ The member.
+ The member attributes.
+
+
+
+ Gets the type attribute.
+
+ The type.
+ The type attribute.
+
+
+
+ Gets the type attributes.
+
+ The type.
+ The type attributes.
+
+
+
+ Gets the type converter.
+
+ The member.
+
+
+
+
+ Gets the attribute.
+
+ The member.
+ The member attribute.
+
+
+
+ Contract for typed dynamic value resolution.
+
+
+
+
+
+ Contract for dynamic value resolution.
+
+
+
+
+ Encapsulates an invocation of a proxied method.
+
+
+
+
+ Overrides the value of an argument at the given with the
+ new provided.
+
+
+ This method accepts an , however the value provided must be compatible
+ with the type of the argument defined on the method, otherwise an exception will be thrown.
+
+ The index of the argument to override.
+ The new value for the argument.
+
+
+
+ Gets the value of the argument at the specified .
+
+ The index.
+ The value of the argument at the specified .
+
+
+
+ Returns the concrete instantiation of the on the proxy, with any generic
+ parameters bound to real types.
+
+
+ The concrete instantiation of the on the proxy, or the if
+ not a generic method.
+
+ Can be slower than calling .
+
+
+
+ Returns the concrete instantiation of , with any
+ generic parameters bound to real types.
+ For interface proxies, this will point to the on the target class.
+
+ The concrete instantiation of , or
+ if not a generic method.
+ In debug builds this can be slower than calling .
+
+
+
+ Proceeds the call to the next interceptor in line, and ultimately to the target method.
+
+
+ Since interface proxies without a target don't have the target implementation to proceed to,
+ it is important, that the last interceptor does not call this method, otherwise a
+ will be thrown.
+
+
+
+
+ Gets the proxy object on which the intercepted method is invoked.
+
+ Proxy object on which the intercepted method is invoked.
+
+
+
+ Gets the object on which the invocation is performed. This is different from proxy object
+ because most of the time this will be the proxy target object.
+
+
+ The invocation target.
+
+
+
+ Gets the type of the target object for the intercepted method.
+
+ The type of the target object.
+
+
+
+ Gets the arguments that the has been invoked with.
+
+ The arguments the method was invoked with.
+
+
+
+ Gets the generic arguments of the method.
+
+ The generic arguments, or null if not a generic method.
+
+
+
+ Gets the representing the method being invoked on the proxy.
+
+ The representing the method being invoked.
+
+
+
+ For interface proxies, this will point to the on the target class.
+
+ The method invocation target.
+
+
+
+ Gets or sets the return value of the method.
+
+ The return value of the method.
+
+
+
+ Used during the target type inspection process. Implementors have a chance to customize the
+ proxy generation process.
+
+
+
+
+ Invoked by the generation process to determine if the specified method should be proxied.
+
+ The type which declares the given method.
+ The method to inspect.
+ True if the given method should be proxied; false otherwise.
+
+
+
+ Invoked by the generation process to notify that a member was not marked as virtual.
+
+ The type which declares the non-virtual member.
+ The non-virtual member.
+
+ This method gives an opportunity to inspect any non-proxyable member of a type that has
+ been requested to be proxied, and if appropriate - throw an exception to notify the caller.
+
+
+
+
+ Invoked by the generation process to notify that the whole process has completed.
+
+
+
+
+ Interface describing elements composing generated type
+
+
+
+
+ Checks if the method is public or protected.
+
+
+
+
+
+
+ Performs some basic screening and invokes the
+ to select methods.
+
+
+
+
+
+
+
+
+ Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy.
+
+
+
+
+ Disassembles given attribute instance back to corresponding CustomAttributeBuilder.
+
+ An instance of attribute to disassemble
+ corresponding 1 to 1 to given attribute instance, or null reference.
+
+ Implementers should return that corresponds to given attribute instance 1 to 1,
+ that is after calling specified constructor with specified arguments, and setting specified properties and fields with values specified
+ we should be able to get an attribute instance identical to the one passed in . Implementer can return null
+ if it wishes to opt out of replicating the attribute. Notice however, that for some cases, like attributes passed explicitly by the user
+ it is illegal to return null, and doing so will result in exception.
+
+
+
+
+ Handles error during disassembly process
+
+ Type of the attribute being disassembled
+ Exception thrown during the process
+ usually null, or (re)throws the exception
+
+
+
+ Here we try to match a constructor argument to its value.
+ Since we can't get the values from the assembly, we use some heuristics to get it.
+ a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument
+ b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string).
+
+
+
+
+ We have the following rules here.
+ Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that
+ we can convert it.
+
+
+
+
+ Attributes can only accept simple types, so we return null for null,
+ if the value is passed as string we call to string (should help with converting),
+ otherwise, we use the value as is (enums, integer, etc).
+
+
+
+
+ Applied to the assemblies saved by in order to persist the cache data included in the persisted assembly.
+
+
+
+
+ Base class that exposes the common functionalities
+ to proxy generation.
+
+
+
+
+ Generates a parameters constructor that initializes the proxy
+ state with just to make it non-null.
+
+ This constructor is important to allow proxies to be XML serializable
+
+
+
+
+
+ It is safe to add mapping (no mapping for the interface exists)
+
+
+
+
+
+
+
+ Generates the constructor for the class that extends
+
+
+
+
+
+
+
+
+ Default implementation of interface producing in-memory proxy assemblies.
+
+
+
+
+ Abstracts the implementation of proxy type construction.
+
+
+
+
+ Creates a proxy type for given , using provided.
+
+ The class type to proxy.
+ The proxy generation options.
+ The generated proxy type.
+ Thrown when is a generic type definition.
+ Thrown when is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Creates a proxy type for given , implementing , using provided.
+
+ The class type to proxy.
+ Additional interface types to proxy.
+ The proxy generation options.
+ The generated proxy type.
+
+ Implementers should return a proxy type for the specified class and interfaces.
+ Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See method.)
+
+ Thrown when or any of is a generic type definition.
+ Thrown when or any of is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Creates a proxy type for given , implementing , using provided.
+
+ The class type to proxy.
+ Additional interface types to proxy.
+ The proxy generation options.
+ The generated proxy type.
+
+ Implementers should return a proxy type for the specified class and interfaces.
+ Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See method.)
+
+ Thrown when or any of is a generic type definition.
+ Thrown when or any of is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Creates a proxy type that proxies calls to members on , implementing , using provided.
+
+ The interface type to proxy.
+ Additional interface types to proxy.
+ Type implementing on which calls to the interface members should be intercepted.
+ The proxy generation options.
+ The generated proxy type.
+
+ Implementers should return a proxy type for the specified interface that 'proceeds' executions to the specified target.
+ Additional interfaces should be only 'mark' interfaces, that is, they should work like interface proxy without target. (See method.)
+
+ Thrown when or any of is a generic type definition.
+ Thrown when or any of is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Creates a proxy type for given that delegates all calls to the provided interceptors.
+
+ The interface type to proxy.
+ Additional interface types to proxy.
+ The proxy generation options.
+ The generated proxy type.
+
+ Implementers should return a proxy type for the specified interface and additional interfaces that delegate all executions to the specified interceptors.
+
+ Thrown when or any of is a generic type definition.
+ Thrown when or any of is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Creates a proxy type for given and that delegates all calls to the provided interceptors and allows interceptors to switch the actual target of invocation.
+
+ The interface type to proxy.
+ Additional interface types to proxy.
+ The proxy generation options.
+ The generated proxy type.
+
+ Implementers should return a proxy type for the specified interface(s) that delegate all executions to the specified interceptors
+ and uses an instance of the interface as their targets (i.e. ), rather than a class. All classes should then implement interface,
+ to allow interceptors to switch invocation target with instance of another type implementing called interface.
+
+ Thrown when or any of is a generic type definition.
+ Thrown when or any of is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.
+
+
+
+
+ Gets or sets the that this logs to.
+
+
+
+
+ Gets the associated with this builder.
+
+ The module scope associated with this builder.
+
+
+
+ Initializes a new instance of the class with new .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The module scope for generated proxy types.
+
+
+
+ Registers custom disassembler to handle disassembly of specified type of attributes.
+
+ Type of attributes to handle
+ Disassembler converting existing instances of Attributes to CustomAttributeBuilders
+
+ When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type,
+ and if none is found, it'll use the .
+
+
+
+
+ Attributes should be replicated if they are non-inheritable,
+ but there are some special cases where the attributes means
+ something to the CLR, where they should be skipped.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Target element. This is either target type or target method for invocation types.
+ The type of the proxy. This is base type for invocation types.
+ The interfaces.
+ The options.
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the target.
+ The interfaces.
+ The options.
+
+
+ s
+ Provides appropriate Ldc.X opcode for the type of primitive value to be loaded.
+
+
+
+
+ Provides appropriate Ldind.X opcode for
+ the type of primitive value to be loaded indirectly.
+
+
+
+
+ Emits a load opcode of the appropriate kind for a constant string or
+ primitive value.
+
+
+
+
+
+
+ Emits a load opcode of the appropriate kind for the constant default value of a
+ type, such as 0 for value types and null for reference types.
+
+
+
+
+ Emits a load indirect opcode of the appropriate type for a value or object reference.
+ Pops a pointer off the evaluation stack, dereferences it and loads
+ a value of the specified type.
+
+
+
+
+
+
+ Emits a store indirectopcode of the appropriate type for a value or object reference.
+ Pops a value of the specified type and a pointer off the evaluation stack, and
+ stores the value.
+
+
+
+
+
+
+ Summary description for PropertiesCollection.
+
+
+
+
+ Wraps a reference that is passed
+ ByRef and provides indirect load/store support.
+
+
+
+
+ Summary description for NewArrayExpression.
+
+
+
+
+
+
+
+
+
+ Provides appropriate Stind.X opcode
+ for the type of primitive value to be stored indirectly.
+
+
+
+
+ Returns list of all unique interfaces implemented given types, including their base interfaces.
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name.
+ Type declaring the original event being overriten, or null.
+
+ The add method.
+ The remove method.
+ The attributes.
+
+
+
+ Represents the scope of uniquenes of names for types and their members
+
+
+
+
+ Gets a unique name based on
+
+ Name suggested by the caller
+ Unique name based on .
+
+ Implementers should provide name as closely resembling as possible.
+ Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix.
+ Implementers must return deterministic names, that is when is called twice
+ with the same suggested name, the same returned name should be provided each time. Non-deterministic return
+ values, like appending random suffices will break serialization of proxies.
+
+
+
+
+ Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision
+ with enclosing scope, or other subscopes is possible.
+
+ New naming scope.
+
+
+
+ Returns the methods implemented by a type. Use this instead of Type.GetMethods() to work around a CLR issue
+ where duplicate MethodInfos are returned by Type.GetMethods() after a token of a generic type's method was loaded.
+
+
+
+
+ Determines whether this assembly has internals visible to dynamic proxy.
+
+ The assembly to inspect.
+
+
+
+ Determines whether the specified method is internal.
+
+ The method.
+
+ true if the specified method is internal; otherwise, false.
+
+
+
+
+ Because we need to cache the types based on the mixed in mixins, we do the following here:
+ - Get all the mixin interfaces
+ - Sort them by full name
+ - Return them by position
+
+ The idea is to have reproducable behavior for the case that mixins are registered in different orders.
+ This method is here because it is required
+
+
+
+
+ Summary description for ModuleScope.
+
+
+
+
+ The default file name used when the assembly is saved using .
+
+
+
+
+ The default assembly (simple) name used for the assemblies generated by a instance.
+
+
+
+
+ Initializes a new instance of the class; assemblies created by this instance will not be saved.
+
+
+
+
+ Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance
+ should be saved.
+
+ If set to true saves the generated module.
+
+
+
+ Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance
+ should be saved.
+
+ If set to true saves the generated module.
+ If set to true disables ability to generate signed module. This should be used in cases where ran under constrained permissions.
+
+
+
+ Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance
+ should be saved and what simple names are to be assigned to them.
+
+ If set to true saves the generated module.
+ If set to true disables ability to generate signed module. This should be used in cases where ran under constrained permissions.
+ The simple name of the strong-named assembly generated by this .
+ The path and file name of the manifest module of the strong-named assembly generated by this .
+ The simple name of the weak-named assembly generated by this .
+ The path and file name of the manifest module of the weak-named assembly generated by this .
+
+
+
+ Initializes a new instance of the class, allowing to specify whether the assemblies generated by this instance
+ should be saved and what simple names are to be assigned to them.
+
+ If set to true saves the generated module.
+ If set to true disables ability to generate signed module. This should be used in cases where ran under constrained permissions.
+ Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).
+ The simple name of the strong-named assembly generated by this .
+ The path and file name of the manifest module of the strong-named assembly generated by this .
+ The simple name of the weak-named assembly generated by this .
+ The path and file name of the manifest module of the weak-named assembly generated by this .
+
+
+
+ Returns a type from this scope's type cache, or null if the key cannot be found.
+
+ The key to be looked up in the cache.
+ The type from this scope's type cache matching the key, or null if the key cannot be found
+
+
+
+ Registers a type in this scope's type cache.
+
+ The key to be associated with the type.
+ The type to be stored in the cache.
+
+
+
+ Gets the key pair used to sign the strong-named assembly generated by this .
+
+
+
+
+
+ Gets the specified module generated by this scope, creating a new one if none has yet been generated.
+
+ If set to true, a strong-named module is returned; otherwise, a weak-named module is returned.
+ A strong-named or weak-named module generated by this scope, as specified by the parameter.
+
+
+
+ Gets the strong-named module generated by this scope, creating a new one if none has yet been generated.
+
+ A strong-named module generated by this scope.
+
+
+
+ Gets the weak-named module generated by this scope, creating a new one if none has yet been generated.
+
+ A weak-named module generated by this scope.
+
+
+
+ Saves the generated assembly with the name and directory information given when this instance was created (or with
+ the and current directory if none was given).
+
+
+
+ This method stores the generated assembly in the directory passed as part of the module information specified when this instance was
+ constructed (if any, else the current directory is used). If both a strong-named and a weak-named assembly
+ have been generated, it will throw an exception; in this case, use the overload.
+
+
+ If this was created without indicating that the assembly should be saved, this method does nothing.
+
+ Both a strong-named and a weak-named assembly have been generated.
+ The path of the generated assembly file, or null if no file has been generated.
+
+
+
+ Saves the specified generated assembly with the name and directory information given when this instance was created
+ (or with the and current directory if none was given).
+
+ True if the generated assembly with a strong name should be saved (see );
+ false if the generated assembly without a strong name should be saved (see .
+
+
+ This method stores the specified generated assembly in the directory passed as part of the module information specified when this instance was
+ constructed (if any, else the current directory is used).
+
+
+ If this was created without indicating that the assembly should be saved, this method does nothing.
+
+
+ No assembly has been generated that matches the parameter.
+
+ The path of the generated assembly file, or null if no file has been generated.
+
+
+
+ Loads the generated types from the given assembly into this 's cache.
+
+ The assembly to load types from. This assembly must have been saved via or
+ , or it must have the manually applied.
+
+ This method can be used to load previously generated and persisted proxy types from disk into this scope's type cache, eg. in order
+ to avoid the performance hit associated with proxy generation.
+
+
+
+
+ Users of this should use this lock when accessing the cache.
+
+
+
+
+ Gets the strong-named module generated by this scope, or if none has yet been generated.
+
+ The strong-named module generated by this scope, or if none has yet been generated.
+
+
+
+ Gets the file name of the strongly named module generated by this scope.
+
+ The file name of the strongly named module generated by this scope.
+
+
+
+ Gets the directory where the strongly named module generated by this scope will be saved, or if the current directory
+ is used.
+
+ The directory where the strongly named module generated by this scope will be saved when is called
+ (if this scope was created to save modules).
+
+
+
+ Gets the weak-named module generated by this scope, or if none has yet been generated.
+
+ The weak-named module generated by this scope, or if none has yet been generated.
+
+
+
+ Gets the file name of the weakly named module generated by this scope.
+
+ The file name of the weakly named module generated by this scope.
+
+
+
+ Gets the directory where the weakly named module generated by this scope will be saved, or if the current directory
+ is used.
+
+ The directory where the weakly named module generated by this scope will be saved when is called
+ (if this scope was created to save modules).
+
+
+
+ ProxyBuilder that persists the generated type.
+
+
+ The saved assembly contains just the last generated type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Saves the generated assembly to a physical file. Note that this renders the unusable.
+
+ The path of the generated assembly file, or null if no assembly has been generated.
+ This method does not support saving multiple files. If both a signed and an unsigned module have been generated, use the
+ respective methods of the .
+
+
+
+ Initializes a new instance of the class.
+
+ The hook.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Provides proxy objects for classes and interfaces.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Proxy types builder.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+ Object proxying calls to members of on object.
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of on object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method generates new proxy type for each type of , which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use method.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on object with given .
+ Interceptors can use interface to provide other target for method invocation than default .
+
+ Type of the interface implemented by which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on object or alternative implementation swapped at runtime by an interceptor.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+ Thrown when given does not implement interface.
+ Thrown when no default constructor exists on actual type of object.
+ Thrown when default constructor of actual type of throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of types on generated target object.
+
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ As a result of that also at least one implementation must be provided.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of types on generated target object.
+
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ As a result of that also at least one implementation must be provided.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of types on generated target object.
+
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ As a result of that also at least one implementation must be provided.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on generated target object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of type on generated target object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on generated target object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of on generated target object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not an interface type.
+
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to members of interface on target object generated at runtime with given .
+
+ Type of the interface which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ Object proxying calls to members of and types on generated target object.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given array is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not an interface type.
+
+ Since this method uses an empty-shell implementation of to proxy generated at runtime, the actual implementation of proxied methods must be provided by given implementations.
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call , since there's no actual implementation to proceed with.
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no parameterless constructor exists on type .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The target object, calls to which will be intercepted.
+ The proxy generation options used to influence generated proxy type and object.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no parameterless constructor exists on type .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of type.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The proxy generation options used to influence generated proxy type and object.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no default constructor exists on type .
+ Thrown when default constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates proxy object intercepting calls to virtual members of type on newly created instance of that type with given .
+
+ Type of class which will be proxied.
+ Additional interface types. Calls to their members will be proxied as well.
+ The proxy generation options used to influence generated proxy type and object.
+ Arguments of constructor of type which should be used to create a new instance of that type.
+ The interceptors called during the invocation of proxied methods.
+
+ New object of type proxying calls to virtual members of and types.
+
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given object is a null reference (Nothing in Visual Basic).
+ Thrown when given or any of is a generic type definition.
+ Thrown when given is not a class type.
+ Thrown when no constructor exists on type with parameters matching .
+ Thrown when constructor of type throws an exception.
+
+ This method uses implementation to generate a proxy type.
+ As such caller should expect any type of exception that given implementation may throw.
+
+
+
+
+ Creates the proxy type for class proxy with given class, implementing given and using provided .
+
+ The base class for proxy type.
+ The interfaces that proxy type should implement.
+ The options for proxy generation process.
+ of proxy.
+
+
+
+ Creates the proxy type for interface proxy with target for given interface, implementing given on given and using provided .
+
+ The interface proxy type should implement.
+ The additional interfaces proxy type should implement.
+ Actual type that the proxy type will encompass.
+ The options for proxy generation process.
+ of proxy.
+
+
+
+ Creates the proxy type for interface proxy with target interface for given interface, implementing given on given and using provided .
+
+ The interface proxy type should implement.
+ The additional interfaces proxy type should implement.
+ The options for proxy generation process.
+ of proxy.
+
+
+
+ Creates the proxy type for interface proxy without target for given interface, implementing given and using provided .
+
+ The interface proxy type should implement.
+ The additional interfaces proxy type should implement.
+ The options for proxy generation process.
+ of proxy.
+
+
+
+ Gets or sets the that this log to.
+
+
+
+
+ Gets the proxy builder instance used to generate proxy types.
+
+ The proxy builder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ For interface proxies, this will point to the
+ on the target class
+
+
+
+
+ Handles the deserialization of proxies.
+
+
+
+
+ Resets the used for deserialization to a new scope.
+
+ This is useful for test cases.
+
+
+
+ Resets the used for deserialization to a given .
+
+ The scope to be used for deserialization.
+ By default, the deserialization process uses a different scope than the rest of the application, which can lead to multiple proxies
+ being generated for the same type. By explicitly setting the deserialization scope to the application's scope, this can be avoided.
+
+
+
+ Gets the used for deserialization.
+
+ As has no way of automatically determining the scope used by the application (and the application
+ might use more than one scope at the same time), uses a dedicated scope instance for deserializing proxy
+ types. This instance can be reset and set to a specific value via and .
+
+
+
+ Holds objects representing methods of class.
+
+
+
+
+ Holds objects representing methods of class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides an extension point that allows proxies to choose specific interceptors on
+ a per method basis.
+
+
+
+
+ Selects the interceptors that should intercept calls to the given .
+
+ The type declaring the method to intercept.
+ The method that will be intercepted.
+ All interceptors registered with the proxy.
+ An array of interceptors to invoke upon calling the .
+
+ This method is called only once per proxy instance, upon the first call to the
+ . Either an empty array or null are valid return values to indicate
+ that no interceptor should intercept calls to the method. Although it is not advised, it is
+ legal to return other implementations than these provided in
+ .
+
+
+
+
+ Creates a new lock.
+
+
+
+
+
+ This interface should be implemented by classes
+ that are available in a bigger context, exposing
+ the container to different areas in the same application.
+
+ For example, in Web application, the (global) HttpApplication
+ subclasses should implement this interface to expose
+ the configured container
+
+
+
+
+
+ Exposes means to change target objects of proxies and invocations
+
+
+
+
+ Changes the target object () of current .
+
+ The new value of target of invocation.
+
+ Although the method takes the actual instance must be of type assignable to , otherwise an will be thrown.
+ Also while it's technically legal to pass null reference (Nothing in Visual Basic) as , for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target.
+ In this case last interceptor in the pipeline mustn't call or a will be throws.
+ Also while it's technically legal to pass proxy itself as , this would create stack overflow.
+ In this case last interceptor in the pipeline mustn't call or a will be throws.
+
+ Thrown when is not assignable to the proxied type.
+
+
+
+ Permanently changes the target object of the proxy. This does not affect target of the current invocation.
+
+ The new value of target of the proxy.
+
+ Although the method takes the actual instance must be of type assignable to proxy's target type, otherwise an will be thrown.
+ Also while it's technically legal to pass null reference (Nothing in Visual Basic) as , for obvious reasons Dynamic Proxy will not be able to call the intercepted method on such target.
+ In this case last interceptor in the pipeline mustn't call or a will be throws.
+ Also while it's technically legal to pass proxy itself as , this would create stack overflow.
+ In this case last interceptor in the pipeline mustn't call or a will be throws.
+
+ Thrown when is not assignable to the proxied type.
+
+
+
+ New interface that is going to be used by DynamicProxy 2
+
+
+
+
+ Get the proxy target (note that null is a valid target!)
+
+
+
+
+
+ Gets the interceptors for the proxy
+
+
+
+
+
+ Defines that the implementation wants a
+ in order to
+ access other components. The creator must be aware
+ that the component might (or might not) implement
+ the interface.
+
+
+ Used by Castle Project components to, for example,
+ gather logging factories
+
+
+
+
+ Increments IServiceProvider with a generic service resolution operation.
+
+
+
+
+ Provides a factory that can produce either or
+ classes.
+
+
+
+
+ Manages the instantiation of s.
+
+
+
+
+ Creates a new logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new logger.
+
+
+
+
+ Creates a new logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new logger.
+
+
+
+
+ Creates a new extended logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new extended logger.
+
+
+
+
+ Creates a new extended logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new extended logger.
+
+
+
+
+ Creates a new extended logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new extended logger.
+
+
+
+
+ Creates a new extended logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new extended logger.
+
+
+
+
+ Creates a new logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new logger.
+
+
+
+
+ Creates a new logger, getting the logger name from the specified type.
+
+
+
+
+ Creates a new logger.
+
+
+
+
+ Gets the configuration file.
+
+ i.e. log4net.config
+
+
+
+
+ Used to create the TraceLogger implementation of ILogger interface. See .
+
+
+
+
+ Gets the configuration file.
+
+ i.e. log4net.config
+
+
+
+
+ Interface for Context Properties implementations
+
+
+
+ This interface defines a basic property get set accessor.
+
+
+ Based on the ContextPropertiesBase of log4net, by Nicko Cadell.
+
+
+
+
+
+ Gets or sets the value of a property
+
+
+ The value for the property with the specified key
+
+
+
+ Gets or sets the value of a property
+
+
+
+
+
+ NullLogFactory used when logging is turned off.
+
+
+
+
+ Creates an instance of ILogger with the specified name.
+
+ Name.
+
+
+
+
+ Creates an instance of ILogger with the specified name and LoggerLevel.
+
+ Name.
+ Level.
+
+
+
+
+ Creates outputing
+ to files. The name of the file is derived from the log name
+ plus the 'log' extension.
+
+
+
+
+ Provides an interface that supports and
+ allows the storage and retrieval of Contexts. These are supported in
+ both log4net and NLog.
+
+
+
+
+ Manages logging.
+
+
+ This is a facade for the different logging subsystems.
+ It offers a simplified interface that follows IOC patterns
+ and a simplified priority/level/severity abstraction.
+
+
+
+
+ Logs a debug message.
+
+ The message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a debug message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs an info message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a warn message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs an error message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a fatal message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal error message.
+
+ The Message
+
+
+
+ Logs a fatal error message.
+
+ The Message
+ The Exception
+
+
+
+ Logs a fatal error message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Create a new child logger.
+ The name of the child logger is [current-loggers-name].[passed-in-name]
+
+ The Subname of this logger.
+ The New ILogger instance.
+ If the name has an empty element name.
+
+
+
+ Determines if messages of priority "debug" will be logged.
+
+ True if "debug" messages will be logged.
+
+
+
+ Determines if messages of priority "info" will be logged.
+
+ True if "info" messages will be logged.
+
+
+
+ Determines if messages of priority "warn" will be logged.
+
+ True if "warn" messages will be logged.
+
+
+
+ Determines if messages of priority "error" will be logged.
+
+ True if "error" messages will be logged.
+
+
+
+ Determines if messages of priority "fatal" will be logged.
+
+ True if "fatal" messages will be logged.
+
+
+
+ Determines if messages of priority "fatalError" will be logged.
+
+ True if "fatalError" messages will be logged.
+
+
+
+ Exposes the Global Context of the extended logger.
+
+
+
+
+ Exposes the Thread Context of the extended logger.
+
+
+
+
+ Exposes the Thread Stack of the extended logger.
+
+
+
+
+ Supporting Logger levels.
+
+
+
+
+ Logging will be off
+
+
+
+
+ Fatal logging level
+
+
+
+
+ Error logging level
+
+
+
+
+ Warn logging level
+
+
+
+
+ Info logging level
+
+
+
+
+ Debug logging level
+
+
+
+
+ The Logger sending everything to the standard output streams.
+ This is mainly for the cases when you have a utility that
+ does not have a logger to supply.
+
+
+
+
+ The Level Filtered Logger class. This is a base clase which
+ provides a LogLevel attribute and reroutes all functions into
+ one Log method.
+
+
+
+
+ Creates a new LevelFilteredLogger.
+
+
+
+
+ Keep the instance alive in a remoting scenario
+
+
+
+
+
+ Logs a debug message.
+
+ The message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a debug message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a debug message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Logs an info message.
+
+ The message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs an info message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an info message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Logs a warn message.
+
+ The message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a warn message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a warn message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Logs an error message.
+
+ The message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs an error message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs an error message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Logs a fatal message.
+
+ The message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ The message to log
+
+
+
+ Logs a fatal message.
+
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ The exception to log
+ The format provider to use
+ Format string for the message to log
+ Format arguments for the message to log
+
+
+
+ Logs a fatal message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Logs a fatal error message.
+
+ The Message
+
+
+
+ Logs a fatal error message.
+
+ The Message
+ The Exception
+
+
+
+ Logs a fatal error message.
+
+ Message format
+ Array of objects to write using format
+
+
+
+ Implementors output the log content by implementing this method only.
+ Note that exception can be null
+
+
+
+
+
+
+
+
+ The LoggerLevel that this logger
+ will be using. Defaults to LoggerLevel.Off
+
+
+
+
+ The name that this logger will be using.
+ Defaults to String.Empty
+
+
+
+
+ Determines if messages of priority "debug" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Determines if messages of priority "info" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Determines if messages of priority "warn" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Determines if messages of priority "error" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Determines if messages of priority "fatal" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Determines if messages of priority "fatal" will be logged.
+
+ true if log level flags include the bit
+
+
+
+ Creates a new ConsoleLogger with the Level
+ set to LoggerLevel.Debug and the Name
+ set to String.Empty.
+
+
+
+
+ Creates a new ConsoleLogger with the Name
+ set to String.Empty.
+
+ The logs Level.
+
+
+
+ Creates a new ConsoleLogger with the Level
+ set to LoggerLevel.Debug.
+
+ The logs Name.
+
+
+
+ Creates a new ConsoleLogger.
+
+ The logs Name.
+ The logs Level.
+
+
+
+ A Common method to log.
+
+ The level of logging
+ The name of the logger
+ The Message
+ The Exception
+
+
+
+ Returns a new ConsoleLogger with the name
+ added after this loggers name, with a dot in between.
+
+ The added hierarchical name.
+ A new ConsoleLogger.
+
+
+
+ The Logger using standart Diagnostics namespace.
+
+
+
+
+ Creates a logger based on .
+
+
+
+
+
+ Creates a logger based on .
+
+
+
+
+
+
+ Creates a logger based on .
+
+
+
+
+
+
+
+ The Null Logger class. This is useful for implementations where you need
+ to provide a logger to a utility class, but do not want any output from it.
+ It also helps when you have a utility that does not have a logger to supply.
+
+
+
+
+ Creates a new NullLogger.
+
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ No-op.
+
+ Ignored
+ Ignored
+
+
+
+ Returns this NullLogger.
+
+ Ignored
+ This ILogger instance.
+
+
+
+ No-op.
+
+ false
+
+
+
+ No-op.
+
+ false
+
+
+
+ No-op.
+
+ false
+
+
+
+ No-op.
+
+ false
+
+
+
+ No-op.
+
+ false
+
+
+
+ No-op.
+
+ false
+
+
+
+ Returns empty context properties.
+
+
+
+
+ Returns empty context properties.
+
+
+
+
+ Returns empty context stacks.
+
+
+
+
+ The Stream Logger class. This class can stream log information
+ to any stream, it is suitable for storing a log file to disk,
+ or to a MemoryStream for testing your components.
+
+
+ This logger is not thread safe.
+
+
+
+
+ Creates a new StreamLogger with default encoding
+ and buffer size. Initial Level is set to Debug.
+
+
+ The name of the log.
+
+
+ The stream that will be used for logging,
+ seeking while the logger is alive
+
+
+
+
+ Creates a new StreamLogger with default buffer size.
+ Initial Level is set to Debug.
+
+
+ The name of the log.
+
+
+ The stream that will be used for logging,
+ seeking while the logger is alive
+
+
+ The encoding that will be used for this stream.
+
+
+
+
+
+ Creates a new StreamLogger.
+ Initial Level is set to Debug.
+
+
+ The name of the log.
+
+
+ The stream that will be used for logging,
+ seeking while the logger is alive
+
+
+ The encoding that will be used for this stream.
+
+
+
+ The buffer size that will be used for this stream.
+
+
+
+
+
+ Creates a new StreamLogger with
+ Debug as default Level.
+
+ The name of the log.
+ The StreamWriter the log will write to.
+
+
+
+ The TraceLogger sends all logging to the System.Diagnostics.TraceSource
+ built into the .net framework.
+
+
+ Logging can be configured in the system.diagnostics configuration
+ section.
+
+ If logger doesn't find a source name with a full match it will
+ use source names which match the namespace partially. For example you can
+ configure from all castle components by adding a source name with the
+ name "Castle".
+
+ If no portion of the namespace matches the source named "Default" will
+ be used.
+
+
+
+
+ Build a new trace logger based on the named TraceSource
+
+ The name used to locate the best TraceSource. In most cases comes from the using type's fullname.
+
+
+
+ Build a new trace logger based on the named TraceSource
+
+ The name used to locate the best TraceSource. In most cases comes from the using type's fullname.
+ The default logging level at which this source should write messages. In almost all cases this
+ default value will be overridden in the config file.
+
+
+
+ Create a new child logger.
+ The name of the child logger is [current-loggers-name].[passed-in-name]
+
+ The Subname of this logger.
+ The New ILogger instance.
+
+
+
+ This is an abstract implementation
+ that deals with methods that can be abstracted away
+ from underlying implementations.
+
+
+ AbstractConfiguration makes easier to implementers
+ to create a new version of
+
+
+
+
+ is a interface encapsulating a configuration node
+ used to retrieve configuration values.
+
+
+
+
+ Gets the value of the node and converts it
+ into specified .
+
+ The
+
+ The Default value returned if the conversion fails.
+
+ The Value converted into the specified type.
+
+
+
+ Gets the name of the node.
+
+
+ The Name of the node.
+
+
+
+
+ Gets the value of the node.
+
+
+ The Value of the node.
+
+
+
+
+ Gets an of
+ elements containing all node children.
+
+ The Collection of child nodes.
+
+
+
+ Gets an of the configuration attributes.
+
+
+
+
+ Gets the value of the node and converts it
+ into specified .
+
+ The
+
+ The Default value returned if the convertion fails.
+
+ The Value converted into the specified type.
+
+
+
+ Gets the name of the .
+
+
+ The Name of the .
+
+
+
+
+ Gets the value of .
+
+
+ The Value of the .
+
+
+
+
+ Gets all child nodes.
+
+ The of child nodes.
+
+
+
+ Gets node attributes.
+
+
+ All attributes of the node.
+
+
+
+
+ A collection of objects.
+
+
+
+
+ Creates a new instance of ConfigurationCollection.
+
+
+
+
+ Creates a new instance of ConfigurationCollection.
+
+
+
+
+ Summary description for MutableConfiguration.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name.
+
+
+
+ Gets the value of .
+
+
+ The Value of the .
+
+
+
+
+ Pendent
+
+
+
+
+ Deserializes the specified node into an abstract representation of configuration.
+
+ The node.
+
+
+
+
+ If a config value is an empty string we return null, this is to keep
+ backward compability with old code
+
+
+
+
+ General purpose class to represent a standard pair of values.
+
+ Type of the first value
+ Type of the second value
+
+
+
+ Constructs a pair with its values
+
+
+
+
+
+
+ List of utility methods related to dynamic proxy operations
+
+
+
+
+ Determines whether the specified type is a proxy generated by
+ DynamicProxy (1 or 2).
+
+ The type.
+
+ true if it is a proxy; otherwise, false.
+
+
+
+
+ Pendent
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target.
+
+
+
+ Determines whether the object contains an element with the specified key.
+
+ The key to locate in the object.
+
+ true if the contains an element with the key; otherwise, false.
+
+
+ is null.
+
+
+
+ Adds an element with the provided key and value to the object.
+
+ The to use as the key of the element to add.
+ The to use as the value of the element to add.
+
+ is null.
+ An element with the same key already exists in the object.
+ The is read-only.-or- The has a fixed size.
+
+
+
+ Removes all elements from the object.
+
+ The object is read-only.
+
+
+
+ Returns an object for the object.
+
+
+ An object for the object.
+
+
+
+
+ Removes the element with the specified key from the object.
+
+ The key of the element to remove.
+
+ is null.
+ The object is read-only.-or- The has a fixed size.
+
+
+
+ Copies the elements of the to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+ is less than zero.
+
+ 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 .
+ The type of the source cannot be cast automatically to the type of the destination .
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Gets or sets the with the specified key.
+
+
+
+
+
+ Gets an object containing the keys of the object.
+
+
+ An object containing the keys of the object.
+
+
+
+ Gets an object containing the values in the object.
+
+
+ An object containing the values in the object.
+
+
+
+ Gets a value indicating whether the object is read-only.
+
+
+ true if the object is read-only; otherwise, false.
+
+
+
+ Gets a value indicating whether the object has a fixed size.
+
+
+ true if the object has a fixed size; otherwise, false.
+
+
+
+ Gets the number of elements contained in the .
+
+
+ The number of elements contained in the .
+
+
+
+ Gets an object that can be used to synchronize access to the .
+
+
+ An object that can be used to synchronize access to the .
+
+
+
+ Gets a value indicating whether access to the is synchronized (thread safe).
+
+
+ true if access to the is synchronized (thread safe); otherwise, false.
+
+
+
+ Represents a 'streamable' resource. Can
+ be a file, a resource in an assembly.
+
+
+
+
+ Returns a reader for the stream
+
+
+ It's up to the caller to dispose the reader.
+
+
+
+
+
+ Returns a reader for the stream
+
+
+ It's up to the caller to dispose the reader.
+
+
+
+
+
+
+ Returns an instance of
+ created according to the relativePath
+ using itself as the root.
+
+
+
+
+
+
+
+
+
+ Only valid for resources that
+ can be obtained through relative paths
+
+
+
+
+
+
+
+
+
+ This returns a new stream instance each time it is called.
+ It is the responsability of the caller to dispose of this stream
+
+
+
+
+ Depicts the contract for resource factories.
+
+
+
+
+ Used to check whether the resource factory
+ is able to deal with the given resource
+ identifier.
+
+
+ Implementors should return true
+ only if the given identifier is supported
+ by the resource factory
+
+
+
+
+
+
+ Creates an instance
+ for the given resource identifier
+
+
+
+
+
+
+ Creates an instance
+ for the given resource identifier
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adapts a static string content as an
+
+
+
+
+ Enable access to files on network shares
+
+
+
+
+ Email sender abstraction.
+
+
+
+
+ Sends a mail message.
+
+ From field
+ To field
+ E-mail's subject
+ message's body
+
+
+
+ Sends a message.
+
+ Message instance
+
+
+
+ Sends multiple messages.
+
+ List of messages
+
+
+
+ Default implementation.
+
+
+
+
+ Initializes a new instance of the class based on the configuration provided in the application configuration file.
+
+
+ This constructor is based on the default configuration in the application configuration file.
+
+
+
+
+ This service implementation
+ requires a host name in order to work
+
+ The smtp server name
+
+
+
+ Sends a message.
+
+ If any of the parameters is null
+ From field
+ To field
+ e-mail's subject
+ message's body
+
+
+
+ Sends a message.
+
+ If the message is null
+ Message instance
+
+
+
+ Configures the sender
+ with port information and eventual credential
+ informed
+
+ Message instance
+
+
+
+ Gets or sets the port used to
+ access the SMTP server
+
+
+
+
+ Gets the hostname.
+
+ The hostname.
+
+
+
+ Gets or sets a value which is used to
+ configure if emails are going to be sent asyncrhonously or not.
+
+
+
+
+ Gets or sets a value that specifies
+ the amount of time after which a synchronous Send call times out.
+
+
+
+
+ Gets or sets a value indicating whether the email should be sent using
+ a secure communication channel.
+
+ true if should use SSL; otherwise, false.
+
+
+
+ Gets or sets the domain.
+
+ The domain.
+
+
+
+ Gets or sets the name of the user.
+
+ The name of the user.
+
+
+
+ Gets or sets the password.
+
+ The password.
+
+
+
+ Gets a value indicating whether credentials were informed.
+
+
+ if this instance has credentials; otherwise, .
+
+
+
+
diff --git a/libs/VSTOContrib.Extensions.Proxies.dll b/libs/VSTOContrib.Extensions.Proxies.dll
new file mode 100644
index 0000000..0623c68
Binary files /dev/null and b/libs/VSTOContrib.Extensions.Proxies.dll differ
diff --git a/libs/VSTOContrib.Outlook.Extensions.Proxies.dll b/libs/VSTOContrib.Outlook.Extensions.Proxies.dll
new file mode 100644
index 0000000..d0f0d96
Binary files /dev/null and b/libs/VSTOContrib.Outlook.Extensions.Proxies.dll differ
diff --git a/src/GithubForOutlook.Logic/AddinBootstrapper.cs b/src/GithubForOutlook.Logic/AddinBootstrapper.cs
index fee37ee..f82dc8c 100644
--- a/src/GithubForOutlook.Logic/AddinBootstrapper.cs
+++ b/src/GithubForOutlook.Logic/AddinBootstrapper.cs
@@ -1,8 +1,11 @@
using System;
-using Autofac;
+using Autofac;
+using GithubForOutlook.Logic.Repositories;
+using GithubForOutlook.Logic.Repositories.Interfaces;
using GithubForOutlook.Logic.Ribbons.Task;
using GithubForOutlook.Logic.Ribbons.Email;
-using GithubForOutlook.Logic.Ribbons.MainExplorer;
+using GithubForOutlook.Logic.Ribbons.MainExplorer;
+using Microsoft.Office.Interop.Outlook;
using NGitHub;
using NGitHub.Authentication;
using VSTOContrib.Core.RibbonFactory.Interfaces;
@@ -13,16 +16,16 @@ public class AddinBootstrapper : IDisposable
{
private readonly IContainer container;
- public AddinBootstrapper()
+ public AddinBootstrapper(NameSpace nameSpace)
{
var containerBuilder = new ContainerBuilder();
- RegisterComponents(containerBuilder);
+ RegisterComponents(containerBuilder, nameSpace);
- container = containerBuilder.Build();
+ container = containerBuilder.Build();
}
- private static void RegisterComponents(ContainerBuilder containerBuilder)
+ private static void RegisterComponents(ContainerBuilder containerBuilder, NameSpace nameSpace)
{
var assembly = typeof (GithubTask).Assembly;
@@ -33,7 +36,15 @@ private static void RegisterComponents(ContainerBuilder containerBuilder)
containerBuilder.RegisterType()
.AsImplementedInterfaces();
containerBuilder.RegisterType()
- .AsImplementedInterfaces();
+ .AsImplementedInterfaces();
+
+ containerBuilder.RegisterType()
+ .As();
+
+ containerBuilder.RegisterType()
+ .As();
+
+ containerBuilder.Register(c => nameSpace);
containerBuilder.RegisterType()
.As()
@@ -45,7 +56,7 @@ private static void RegisterComponents(ContainerBuilder containerBuilder)
containerBuilder.RegisterType()
.As()
- .AsSelf();
+ .AsSelf();
}
public object Resolve(Type type)
diff --git a/src/GithubForOutlook.Logic/GithubForOutlook.Logic.csproj b/src/GithubForOutlook.Logic/GithubForOutlook.Logic.csproj
index b27fda0..e65f822 100644
--- a/src/GithubForOutlook.Logic/GithubForOutlook.Logic.csproj
+++ b/src/GithubForOutlook.Logic/GithubForOutlook.Logic.csproj
@@ -39,6 +39,9 @@
..\packages\Autofac.2.5.2.830\lib\NET40\Autofac.Configuration.dll
+
+ ..\..\libs\Castle.Core.dll
+
False
@@ -70,17 +73,29 @@
+
+ ..\..\libs\VSTOContrib.Extensions.Proxies.dll
+
+
+ ..\..\libs\VSTOContrib.Outlook.Extensions.Proxies.dll
+
+
+
+
+
+
+
diff --git a/src/GithubForOutlook.Logic/GithubTaskAdapter.cs b/src/GithubForOutlook.Logic/GithubTaskAdapter.cs
index 80c1dcd..cec3535 100644
--- a/src/GithubForOutlook.Logic/GithubTaskAdapter.cs
+++ b/src/GithubForOutlook.Logic/GithubTaskAdapter.cs
@@ -1,11 +1,12 @@
-using Microsoft.Office.Interop.Outlook;
+using System;
+using Microsoft.Office.Interop.Outlook;
using VSTOContrib.Outlook;
namespace GithubForOutlook.Logic
{
public class GithubTaskAdapter
{
- private const string Githubissueid = "GithubIssueId";
+ public const string Githubissueid = "GithubIssueId";
private readonly TaskItem outlookTask;
private bool? isGithubTask;
@@ -24,18 +25,48 @@ public bool IsGithubTask
}
return isGithubTask.Value;
}
- set
- {
- isGithubTask = value;
- outlookTask.SetPropertyValue(Githubissueid, OlUserPropertyType.olInteger, value, true);
- }
}
private bool CheckIfGithubTask()
{
- var issueId = outlookTask.GetPropertyValue(Githubissueid, OlUserPropertyType.olInteger, false, o=>(int?)o, null);
+ var issueId = outlookTask.GetPropertyValue(Githubissueid, OlUserPropertyType.olText, false, o=>string.IsNullOrWhiteSpace(o.ToString()), false);
+
+ return issueId;
+ }
+
+ public string TaskId
+ {
+ get
+ {
+ return outlookTask.GetPropertyValue(Githubissueid, OlUserPropertyType.olText, false, (o) => o.ToString(), null);
+ }
+ set
+ {
+ outlookTask.SetPropertyValue(Githubissueid, OlUserPropertyType.olText, value.ToString(), true);
+ }
+ }
+
+ public string Title
+ {
+ get { return outlookTask.Subject; }
+ set { outlookTask.Subject = value; }
+ }
+
+ public string Body
+ {
+ get { return outlookTask.Body; }
+ set { outlookTask.Body = value; }
+ }
+
+ public OlTaskStatus Status
+ {
+ get { return outlookTask.Status; }
+ set { outlookTask.Status = value; }
+ }
- return issueId != null;
+ public DateTime LastModified
+ {
+ get { return outlookTask.LastModificationTime; }
}
}
}
\ No newline at end of file
diff --git a/src/GithubForOutlook.Logic/Models/ApplicationSettings.cs b/src/GithubForOutlook.Logic/Models/ApplicationSettings.cs
new file mode 100644
index 0000000..0df4102
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Models/ApplicationSettings.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GithubForOutlook.Logic.Models
+{
+ public class ApplicationSettings
+ {
+ public User User { get; set; }
+
+ }
+}
diff --git a/src/GithubForOutlook.Logic/Models/GithubIssue.cs b/src/GithubForOutlook.Logic/Models/GithubIssue.cs
new file mode 100644
index 0000000..7fb289b
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Models/GithubIssue.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GithubForOutlook.Logic.Models
+{
+ public class GithubIssue
+ {
+ public string TaskId { get; set; }
+
+ public string Title { get; set; }
+ public string Body { get; set; }
+
+ public DateTime LastModified { get; set; }
+ }
+}
diff --git a/src/GithubForOutlook.Logic/Repositories/GithubRepository.cs b/src/GithubForOutlook.Logic/Repositories/GithubRepository.cs
new file mode 100644
index 0000000..18abf12
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Repositories/GithubRepository.cs
@@ -0,0 +1,113 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using GithubForOutlook.Logic.Repositories.Interfaces;
+using NGitHub;
+using NGitHub.Models;
+using NGitHub.Services;
+using NGitHub.Web;
+using RestSharp;
+
+namespace GithubForOutlook.Logic.Repositories
+{
+ public class GithubRepository : IGithubRepository
+ {
+ private GitHubClient client;
+ private readonly Action _exceptionAction = ex => Console.WriteLine("Error: " + Enum.GetName(typeof(ErrorType), ex.ErrorType), "");
+
+ private string _password;
+ private string _username;
+ public void Login(string username, string password)
+ {
+ _username = username;
+ _password = password;
+ client = new GitHubClient
+ {
+ Authenticator = new HttpBasicAuthenticator(_username, _password)
+ };
+ }
+
+ public Task GetUser()
+ {
+ return NGitHub(client.Users.GetAuthenticatedUserAsync);
+ }
+
+ public Task> GetOrganisations(string username, int page = 0)
+ {
+ return NGitHub, string, int>(client.Organizations.GetOrganizationsAsync, username, page);
+ }
+
+ public Task> GetProjects(Models.User user, int page = 0)
+ {
+ //if (user.IsOrganisation)
+ // return NGitHub, string, int, RepositoryTypes>(_client.Organizations., user.Username, page, RepositoryTypes.Member);
+ //else
+ return NGitHub, string, int, RepositoryTypes>(client.Repositories.GetRepositoriesAsync, user.Name, page, RepositoryTypes.All);
+ }
+
+ public Task CreateIssue(string username, string reponame, string title, string body, string assigneename,
+ string milestone, string[] labels)
+ {
+ return NGitHub(client.Issues.CreateIssueAsync, username, reponame, title, body, assigneename, milestone, labels);
+ }
+
+ public Task> GetIssues(string username, string reponame, State state = State.Open,
+ int page = 0)
+ {
+ return NGitHub, string, string, State, int>(client.Issues.GetIssuesAsync, username,
+ reponame, state, page);
+ }
+
+ private Task NGitHub(Func, Action, GitHubRequestAsyncHandle> call)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+
+ private Task NGitHub(Func, Action, GitHubRequestAsyncHandle> call,
+ TArg t1)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(t1, completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+
+ private Task NGitHub(
+ Func, Action, GitHubRequestAsyncHandle> call, TArg t1, TArg2 t2)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(t1, t2, completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+
+ private Task NGitHub(
+ Func, Action, GitHubRequestAsyncHandle> call, TArg t1, TArg2 t2,
+ TArg3 t3)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(t1, t2, t3, completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+
+ private Task NGitHub(
+ Func, Action, GitHubRequestAsyncHandle> call, TArg t1,
+ TArg2 t2, TArg3 t3, TArg4 t4)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(t1, t2, t3, t4, completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+
+ private Task NGitHub(
+ Func, Action, GitHubRequestAsyncHandle> call, TArg t1,
+ TArg2 t2, TArg3 t3, TArg4 t4, TArg5 t5, TArg6 t6, TArg7 t7)
+ {
+ var completionSource = new TaskCompletionSource();
+ call(t1, t2, t3, t4, t5, t6, t7, completionSource.SetResult, completionSource.SetException);
+ return completionSource.Task;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/GithubForOutlook.Logic/Repositories/Interfaces/IGithubRepository.cs b/src/GithubForOutlook.Logic/Repositories/Interfaces/IGithubRepository.cs
new file mode 100644
index 0000000..65e1d7a
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Repositories/Interfaces/IGithubRepository.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NGitHub.Models;
+
+namespace GithubForOutlook.Logic.Repositories.Interfaces
+{
+ public interface IGithubRepository
+ {
+ Task GetUser();
+ Task> GetOrganisations(string username, int page = 0);
+ Task> GetProjects(Models.User user, int page = 0);
+
+ Task CreateIssue(string username, string reponame, string title, string body, string assigneename,
+ string milestone, string[] labels);
+
+ Task> GetIssues(string username, string reponame, State state = State.Open, int page = 0);
+
+ void Login(string username, string password);
+ }
+}
diff --git a/src/GithubForOutlook.Logic/Repositories/Interfaces/IOutlookRepository.cs b/src/GithubForOutlook.Logic/Repositories/Interfaces/IOutlookRepository.cs
new file mode 100644
index 0000000..e23c250
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Repositories/Interfaces/IOutlookRepository.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using GithubForOutlook.Logic.Models;
+
+namespace GithubForOutlook.Logic.Repositories.Interfaces
+{
+ public interface IOutlookRepository
+ {
+ IList GetIssues();
+ IList GetModifiedIssues(DateTime since);
+ void SaveIssue(GithubIssue issue);
+ void SaveIssues(IList issues);
+ }
+}
diff --git a/src/GithubForOutlook.Logic/Repositories/OutlookDispatchingRepository.cs b/src/GithubForOutlook.Logic/Repositories/OutlookDispatchingRepository.cs
new file mode 100644
index 0000000..9d96341
--- /dev/null
+++ b/src/GithubForOutlook.Logic/Repositories/OutlookDispatchingRepository.cs
@@ -0,0 +1,137 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Threading;
+using GithubForOutlook.Logic.Models;
+using GithubForOutlook.Logic.Repositories.Interfaces;
+using Microsoft.Office.Interop.Outlook;
+using VSTOContrib.Core.Extensions;
+using VSTOContrib.Outlook.Extensions.Proxies;
+using VSTOContrib.Outlook.Extensions.Proxies.Interfaces;
+
+
+namespace GithubForOutlook.Logic.Repositories
+{
+ public class OutlookDispatchingRepository : IOutlookRepository
+ {
+ private readonly Dispatcher _outlookStaDispatcher;
+ private readonly NameSpace _session;
+ private readonly ApplicationSettings _settings;
+
+ public OutlookDispatchingRepository(NameSpace session)//, ApplicationSettings settings)
+ {
+ _session = session;
+ //_settings = settings;
+ if(System.Windows.Application.Current != null)
+ _outlookStaDispatcher = System.Windows.Application.Current.Dispatcher;
+
+ //Verify user properties are set
+ using (var tasks = _session.GetDefaultFolder(OlDefaultFolders.olFolderTasks).WithComCleanupProxy())
+ using (var userProperties = tasks.UserDefinedProperties.WithComCleanupProxy())
+ using (var githubTaskIdProperty = userProperties.Find(GithubTaskAdapter.Githubissueid).WithComCleanupProxy())
+ {
+ if (githubTaskIdProperty == null)
+ userProperties.Add(GithubTaskAdapter.Githubissueid, OlUserPropertyType.olText).ReleaseComObject();
+ }
+ }
+
+
+ public IList GetIssues()
+ {
+ return _outlookStaDispatcher.Invoke(new Func>(() =>
+ {
+ var tasks = new List();
+ using (var otasks = _session.GetDefaultFolder(OlDefaultFolders.olFolderTasks).WithComCleanupProxy())
+ using (var items = otasks.Items.WithComCleanupProxy())
+ {
+ tasks.AddRange(items.ComLinq()
+ .Select(task => new GithubTaskAdapter(task))
+ .Select(t => new GithubIssue
+ {
+ TaskId = t.TaskId,
+ Title = t.Title,
+ Body = t.Body,
+ LastModified = t.LastModified
+ }));
+ }
+
+ return tasks;
+ })) as IList;
+ }
+
+ public IList GetModifiedIssues(DateTime since)
+ {
+ return _outlookStaDispatcher.Invoke(new Func>(() =>
+ {
+ var tasks = new List();
+ using (var otasks = _session.GetDefaultFolder(OlDefaultFolders.olFolderTasks).WithComCleanupProxy())
+ using (var items = otasks.Items.WithComCleanupProxy())
+ {
+ var lastModStr = since.ToString("d/MM/yyy h:mmtt");
+
+ var restrictedItems = items.Restrict("[LastModificationTime] > '" + lastModStr + "'");
+
+ using (var modifiedItems = restrictedItems.WithComCleanupProxy())
+ {
+
+ tasks.AddRange(modifiedItems.ComLinq()
+ .Select(task => new GithubTaskAdapter(task))
+ .Select(t => new GithubIssue
+ {
+ TaskId = t.TaskId,
+ Title = t.Title,
+ Body = t.Body,
+ LastModified = t.LastModified
+ }));
+ }
+ }
+
+ return tasks;
+ })) as IList;
+ }
+
+ public void SaveIssue(Models.GithubIssue issue)
+ {
+ _outlookStaDispatcher.Invoke(new System.Action(() =>
+ {
+ using (var tasks = _session.GetDefaultFolder(OlDefaultFolders.olFolderTasks).WithComCleanupProxy())
+ using (var items = tasks.Items.WithComCleanupProxy())
+ {
+ var taskItem = _session.GetItemFromID(issue.TaskId, tasks.StoreID) as TaskItem;
+ using (var outlookTaskItem = taskItem.WithComCleanupProxy())
+ {
+ CreateOrUpdateTask(issue, outlookTaskItem, items);
+ }
+ }
+ }));
+ }
+
+ private void CreateOrUpdateTask(GithubIssue issue, TaskItem outlookTaskItem, IItems items)
+ {
+ if (outlookTaskItem != null)
+ {
+ UpdateAdapter(issue, outlookTaskItem);
+ }
+ else using (var newItem = ((TaskItem)items.Add(OlItemType.olTaskItem)).WithComCleanupProxy())
+ {
+ UpdateAdapter(issue, newItem);
+ }
+ }
+
+ private void UpdateAdapter(GithubIssue issue, TaskItem outlookTaskItem)
+ {
+ var itemAdapter = new GithubTaskAdapter(outlookTaskItem);
+ itemAdapter.Title = issue.Title;
+ itemAdapter.Body = issue.Body;
+
+ if (!outlookTaskItem.Saved)
+ outlookTaskItem.Save();
+ }
+
+ public void SaveIssues(IList issues)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/src/GithubForOutlook.Logic/Ribbons/Email/GithubMailItem.cs b/src/GithubForOutlook.Logic/Ribbons/Email/GithubMailItem.cs
index 1d84f97..c29f9a2 100644
--- a/src/GithubForOutlook.Logic/Ribbons/Email/GithubMailItem.cs
+++ b/src/GithubForOutlook.Logic/Ribbons/Email/GithubMailItem.cs
@@ -1,4 +1,5 @@
-using System.Windows;
+using System.Windows;
+using GithubForOutlook.Logic.Repositories.Interfaces;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Outlook;
using VSTOContrib.Core.RibbonFactory;
@@ -10,7 +11,7 @@ namespace GithubForOutlook.Logic.Ribbons.Email
{
[RibbonViewModel(OutlookRibbonType.OutlookMailRead)]
public class GithubMailItem : OfficeViewModelBase, IRibbonViewModel
- {
+ {
private MailItem mailItem;
public void Initialised(object context)
diff --git a/src/GithubForOutlook.Logic/Ribbons/MainExplorer/GithubExplorerRibbon.cs b/src/GithubForOutlook.Logic/Ribbons/MainExplorer/GithubExplorerRibbon.cs
index c00e036..6f2d87f 100644
--- a/src/GithubForOutlook.Logic/Ribbons/MainExplorer/GithubExplorerRibbon.cs
+++ b/src/GithubForOutlook.Logic/Ribbons/MainExplorer/GithubExplorerRibbon.cs
@@ -1,5 +1,7 @@
using System.Windows;
-using System.Windows.Controls;
+using System.Windows.Controls;
+using GithubForOutlook.Logic.Models;
+using GithubForOutlook.Logic.Repositories.Interfaces;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Outlook;
using VSTOContrib.Core.RibbonFactory;
@@ -11,8 +13,22 @@
namespace GithubForOutlook.Logic.Ribbons.MainExplorer
{
[RibbonViewModel(OutlookRibbonType.OutlookExplorer)]
- public class GithubExplorerRibbon : OfficeViewModelBase, IRibbonViewModel
- {
+ public class GithubExplorerRibbon : OfficeViewModelBase, IRibbonViewModel
+ {
+ public readonly IGithubRepository GithubRepository;
+ public readonly IOutlookRepository OutlookRepository;
+
+ public GithubExplorerRibbon(IGithubRepository githubRepository, IOutlookRepository outlookRepository)
+ {
+ GithubRepository = githubRepository;
+ OutlookRepository = outlookRepository;
+
+ // You need to enter your settings to test
+ githubRepository.Login("username", "password");
+ var task = githubRepository.GetProjects(new User() {Name = "username"});
+ var t = task.Result;
+ }
+
private Explorer explorer;
public void Initialised(object context)
diff --git a/src/GithubForOutlook.Logic/Ribbons/Task/GithubTask.cs b/src/GithubForOutlook.Logic/Ribbons/Task/GithubTask.cs
index 3f40496..6cd95a1 100644
--- a/src/GithubForOutlook.Logic/Ribbons/Task/GithubTask.cs
+++ b/src/GithubForOutlook.Logic/Ribbons/Task/GithubTask.cs
@@ -47,7 +47,7 @@ public bool IsGithubTask
get { return githubIssue.IsGithubTask; }
private set
{
- githubIssue.IsGithubTask = value;
+ //githubIssue.IsGithubTask = value;
RaisePropertyChanged(() => IsGithubTask);
}
}
diff --git a/src/GithubForOutlook.Logic/Sync/GitTaskSync.cs b/src/GithubForOutlook.Logic/Sync/GitTaskSync.cs
index 749e5a9..42f5453 100644
--- a/src/GithubForOutlook.Logic/Sync/GitTaskSync.cs
+++ b/src/GithubForOutlook.Logic/Sync/GitTaskSync.cs
@@ -8,7 +8,7 @@ public class GitTaskSynchronisationService
{
public void Synchronise()
{
- var syncService = new GenericSynchronisationService(
+ var syncService = new GenericSynchronisationService(
i=>i.Id,
new OutlookSyncProvider(),
new GithubSyncProvider(),
@@ -45,14 +45,14 @@ public void Save()
//and killing outlooks perf while the sync happens
//
- public class GithubSyncProvider : ISynchronisationProvider
+ public class GithubSyncProvider : ISynchronisationProvider
{
public IEnumerable GetModifiedEntries(DateTime? lastSync)
{
throw new NotImplementedException();
}
- public IEnumerable GetDeletedEntries(DateTime? lastSync)
+ public IEnumerable GetDeletedEntries(DateTime? lastSync)
{
throw new NotImplementedException();
}
@@ -62,20 +62,20 @@ public void SaveEntries(IEnumerable entries)
throw new NotImplementedException();
}
- public void DeleteEntries(IEnumerable keys)
+ public void DeleteEntries(IEnumerable keys)
{
throw new NotImplementedException();
}
}
- public class OutlookSyncProvider : ISynchronisationProvider
+ public class OutlookSyncProvider : ISynchronisationProvider
{
public IEnumerable GetModifiedEntries(DateTime? lastSync)
{
throw new NotImplementedException();
}
- public IEnumerable GetDeletedEntries(DateTime? lastSync)
+ public IEnumerable GetDeletedEntries(DateTime? lastSync)
{
throw new NotImplementedException();
}
@@ -83,16 +83,16 @@ public IEnumerable GetDeletedEntries(DateTime? lastSync)
public void SaveEntries(IEnumerable entries)
{
throw new NotImplementedException();
- }
-
- public void DeleteEntries(IEnumerable keys)
- {
- throw new NotImplementedException();
- }
+ }
+
+ public void DeleteEntries(IEnumerable keys)
+ {
+ throw new NotImplementedException();
+ }
}
public interface IGithubIssue
{
- int Id { get; set; }
+ string Id { get; set; }
}
}
\ No newline at end of file
diff --git a/src/GithubForOutlook/ThisAddIn.cs b/src/GithubForOutlook/ThisAddIn.cs
index 2cb4e86..99caca9 100644
--- a/src/GithubForOutlook/ThisAddIn.cs
+++ b/src/GithubForOutlook/ThisAddIn.cs
@@ -26,7 +26,7 @@ private void ThisAddInShutdown(object sender, EventArgs e)
private void InternalStartup()
{
- core = new AddinBootstrapper();
+ core = new AddinBootstrapper(Application.Session);
OutlookRibbonFactory.SetApplication(Application);
RibbonFactory.Current.InitialiseFactory(
t => (IRibbonViewModel)core.Resolve(t),