|
From: <aye...@us...> - 2010-02-01 12:06:41
|
Revision: 4941
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4941&view=rev
Author: ayenderahien
Date: 2010-02-01 12:06:34 +0000 (Mon, 01 Feb 2010)
Log Message:
-----------
Upgrading to Castle Dynamic Proxy 2.2
Modified Paths:
--------------
trunk/nhibernate/lib/net/3.5/Castle.Core.dll
trunk/nhibernate/lib/net/3.5/Castle.Core.xml
trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.dll
trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.xml
Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.dll
===================================================================
(Binary files differ)
Modified: trunk/nhibernate/lib/net/3.5/Castle.Core.xml
===================================================================
--- trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-01-27 15:58:40 UTC (rev 4940)
+++ trunk/nhibernate/lib/net/3.5/Castle.Core.xml 2010-02-01 12:06:34 UTC (rev 4941)
@@ -220,52 +220,189 @@
</summary>
<value>The type of the lifestyle handler.</value>
</member>
+ <member name="T:Castle.DynamicProxy.IAttributeDisassembler">
+ <summary>
+ Provides functionality for disassembling instances of attributes to CustomAttributeBuilder form, during the process of emiting new types by Dynamic Proxy.
+ </summary>
+ </member>
+ <member name="M:Castle.DynamicProxy.IAttributeDisassembler.Disassemble(System.Attribute)">
+ <summary>
+ Disassembles given attribute instance back to corresponding CustomAttributeBuilder.
+ </summary>
+ <param name="attribute">An instance of attribute to disassemble</param>
+ <returns><see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> corresponding 1 to 1 to given attribute instance, or null reference.</returns>
+ <remarks>
+ Implementers should return <see cref="T:System.Reflection.Emit.CustomAttributeBuilder"/> 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 <paramref name="attribute"/>. 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.
+ </remarks>
+ </member>
+ <member name="T:Castle.Core.Interceptor.IChangeProxyTarget">
+ <summary>
+ Exposes means to change target objects of proxies and invocations
+ </summary>
+ </member>
+ <member name="M:Castle.Core.Interceptor.IChangeProxyTarget.ChangeInvocationTarget(System.Object)">
+ <summary>
+ Changes the target object (<see cref="P:Castle.Core.Interceptor.IInvocation.InvocationTarget"/>) of current <see cref="T:Castle.Core.Interceptor.IInvocation"/>.
+ </summary>
+ <param name="target">The new value of target of invocation.</param>
+ <remarks>
+ Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to <see cref="P:Castle.Core.Interceptor.IInvocation.TargetType"/>, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown.
+ Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, 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 <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws.
+ Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow.
+ In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws.
+ </remarks>
+ <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception>
+ </member>
+ <member name="M:Castle.Core.Interceptor.IChangeProxyTarget.ChangeProxyTarget(System.Object)">
+ <summary>
+ Permanently changes the target object of the proxy. This does not affect target of the current invocation.
+ </summary>
+ <param name="target">The new value of target of the proxy.</param>
+ <remarks>
+ Although the method takes <see cref="T:System.Object"/> the actual instance must be of type assignable to proxy's target type, otherwise an <see cref="T:System.InvalidCastException"/> will be thrown.
+ Also while it's technically legal to pass null reference (Nothing in Visual Basic) as <paramref name="target"/>, 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 <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.NotImplementedException"/> will be throws.
+ Also while it's technically legal to pass proxy itself as <paramref name="target"/>, this would create stack overflow.
+ In this case last interceptor in the pipeline mustn't call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/> or a <see cref="T:System.InvalidOperationException"/> will be throws.
+ </remarks>
+ <exception cref="T:System.InvalidCastException">Thrown when <paramref name="target"/> is not assignable to the proxied type.</exception>
+ </member>
<member name="T:Castle.Core.Interceptor.IInterceptor">
<summary>
New interface that is going to be used by DynamicProxy 2
</summary>
</member>
+ <member name="T:Castle.Core.Interceptor.IInterceptorSelector">
+ <summary>
+ Provides an extension point that allows proxies to choose specific interceptors on
+ a per method basis.
+ </summary>
+ </member>
+ <member name="M:Castle.Core.Interceptor.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.Core.Interceptor.IInterceptor[])">
+ <summary>
+ Selects the interceptors that should intercept calls to the given <paramref name="method"/>.
+ </summary>
+ <param name="type">The type declaring the method to intercept.</param>
+ <param name="method">The method that will be intercepted.</param>
+ <param name="interceptors">All interceptors registered with the proxy.</param>
+ <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns>
+ <remarks>
+ This method is called only once per proxy instance, upon the first call to the
+ <paramref name="method"/>. 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 <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations than these provided in
+ <paramref name="interceptors"/>.
+ </remarks>
+ </member>
<member name="T:Castle.Core.Interceptor.IInvocation">
<summary>
- New interface that is going to be used by DynamicProxy 2
+ Encapsulates an invocation of a proxied method.
</summary>
</member>
+ <member name="M:Castle.Core.Interceptor.IInvocation.SetArgumentValue(System.Int32,System.Object)">
+ <summary>
+ Overrides the value of an argument at the given <paramref name="index"/> with the
+ new <paramref name="value"/> provided.
+ </summary>
+ <remarks>
+ This method accepts an <see cref="T:System.Object"/>, however the value provided must be compatible
+ with the type of the argument defined on the method, otherwise an exception will be thrown.
+ </remarks>
+ <param name="index">The index of the argument to override.</param>
+ <param name="value">The new value for the argument.</param>
+ </member>
+ <member name="M:Castle.Core.Interceptor.IInvocation.GetArgumentValue(System.Int32)">
+ <summary>
+ Gets the value of the argument at the specified <paramref name="index"/>.
+ </summary>
+ <param name="index">The index.</param>
+ <returns>The value of the argument at the specified <paramref name="index"/>.</returns>
+ </member>
<member name="M:Castle.Core.Interceptor.IInvocation.GetConcreteMethod">
<summary>
- Returns the concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/>, with any generic parameters bound to real types.
+ Returns the concrete instantiation of the <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/>, with any generic
+ parameters bound to real types.
</summary>
- <returns>The concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/>, or <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/> if not a generic method.</returns>
+ <returns>
+ The concrete instantiation of the <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/>, or the <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/> if
+ not a generic method.
+ </returns>
<remarks>Can be slower than calling <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/>.</remarks>
</member>
<member name="M:Castle.Core.Interceptor.IInvocation.GetConcreteMethodInvocationTarget">
<summary>
- Returns the concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/>, with any generic parameters bound to real types.
+ Returns the concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/>, with any
+ generic parameters bound to real types.
</summary>
- <returns>The concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/>, or <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns>
+ <returns>The concrete instantiation of <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/>, or
+ <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/> if not a generic method.</returns>
<remarks>Can be slower than calling <see cref="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget"/>.</remarks>
</member>
<member name="M:Castle.Core.Interceptor.IInvocation.Proceed">
<summary>
-
+ Proceeds the call to the next interceptor in line, and ultimately to the target method.
</summary>
- <returns></returns>
+ <remarks>
+ 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
+ <see cref="T:System.NotImplementedException"/> will be thrown.
+ </remarks>
</member>
+ <member name="P:Castle.Core.Interceptor.IInvocation.Proxy">
+ <summary>
+ Gets the proxy object on which the intercepted method is invoked.
+ </summary>
+ <value>Proxy object on which the intercepted method is invoked.</value>
+ </member>
+ <member name="P:Castle.Core.Interceptor.IInvocation.InvocationTarget">
+ <summary>
+ 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.
+ </summary>
+ <seealso cref="T:Castle.Core.Interceptor.IChangeProxyTarget"/>
+ <value>The invocation target.</value>
+ </member>
+ <member name="P:Castle.Core.Interceptor.IInvocation.TargetType">
+ <summary>
+ Gets the type of the target object for the intercepted method.
+ </summary>
+ <value>The type of the target object.</value>
+ </member>
+ <member name="P:Castle.Core.Interceptor.IInvocation.Arguments">
+ <summary>
+ Gets the arguments that the <see cref="P:Castle.Core.Interceptor.IInvocation.Method"/> has been invoked with.
+ </summary>
+ <value>The arguments the method was invoked with.</value>
+ </member>
<member name="P:Castle.Core.Interceptor.IInvocation.GenericArguments">
<summary>
- The generic arguments of the method, or null if not a generic method.
+ Gets the generic arguments of the method.
</summary>
+ <value>The generic arguments, or null if not a generic method.</value>
</member>
<member name="P:Castle.Core.Interceptor.IInvocation.Method">
<summary>
-
+ Gets the <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.
</summary>
+ <value>The <see cref="T:System.Reflection.MethodInfo"/> representing the method being invoked.</value>
</member>
<member name="P:Castle.Core.Interceptor.IInvocation.MethodInvocationTarget">
<summary>
- For interface proxies, this will point to the
- <see cref="T:System.Reflection.MethodInfo"/> on the target class
+ For interface proxies, this will point to the <see cref="T:System.Reflection.MethodInfo"/> on the target class.
</summary>
+ <value>The method invocation target.</value>
</member>
+ <member name="P:Castle.Core.Interceptor.IInvocation.ReturnValue">
+ <summary>
+ Gets or sets the return value of the method.
+ </summary>
+ <value>The return value of the method.</value>
+ </member>
<member name="T:Castle.Core.Interceptor.IOnBehalfAware">
<summary>
Interceptors might implement this to receive the
@@ -348,6 +485,12 @@
If the index is invalid.
</exception>
</member>
+ <member name="M:Castle.Core.Internal.Lock.Create">
+ <summary>
+ Creates a new lock.
+ </summary>
+ <returns></returns>
+ </member>
<member name="T:Castle.Core.IInitializable">
<summary>
Lifecycle interface. If implemented by a component,
@@ -2077,14 +2220,14 @@
instance in a pool instead of always creating them.
</summary>
</member>
- <member name="F:Castle.Core.LifestyleType.Custom">
+ <member name="F:Castle.Core.LifestyleType.PerWebRequest">
<summary>
- Any other logic to create/release components.
+ PerWebRequest components are created once per Http Request
</summary>
</member>
- <member name="F:Castle.Core.LifestyleType.PerWebRequest">
+ <member name="F:Castle.Core.LifestyleType.Custom">
<summary>
- PerWebRequest components are created once per Http Request
+ Any other logic to create/release components.
</summary>
</member>
<member name="T:Castle.Core.PropertiesInspectionBehavior">
@@ -2716,11 +2859,6 @@
Collection of <see cref="T:Castle.Core.ParameterModel"/>
</summary>
</member>
- <member name="M:Castle.Core.ParameterModelCollection.#ctor">
- <summary>
- Initializes a new instance of the <see cref="T:Castle.Core.ParameterModelCollection"/> class.
- </summary>
- </member>
<member name="M:Castle.Core.ParameterModelCollection.Add(System.String,System.String)">
<summary>
Adds the specified name.
@@ -3001,6 +3139,126 @@
Enable access to files on network shares
</summary>
</member>
+ <member name="T:Castle.Core.Smtp.DefaultSmtpSender">
+ <summary>
+ Default <see cref="T:Castle.Core.Smtp.IEmailSender"/> implementation.
+ </summary>
+ </member>
+ <member name="T:Castle.Core.Smtp.IEmailSender">
+ <summary>
+ Email sender abstraction.
+ </summary>
+ </member>
+ <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.String,System.String,System.String,System.String)">
+ <summary>
+ Sends a mail message.
+ </summary>
+ <param name="from">From field</param>
+ <param name="to">To field</param>
+ <param name="subject">E-mail's subject</param>
+ <param name="messageText">message's body</param>
+ </member>
+ <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Net.Mail.MailMessage)">
+ <summary>
+ Sends a <see cref="T:System.Net.Mail.MailMessage">message</see>.
+ </summary>
+ <param name="message"><see cref="T:System.Net.Mail.MailMessage">Message</see> instance</param>
+ </member>
+ <member name="M:Castle.Core.Smtp.IEmailSender.Send(System.Collections.Generic.IEnumerable{System.Net.Mail.MailMessage})">
+ <summary>
+ Sends multiple <see cref="T:System.Net.Mail.MailMessage">messages</see>.
+ </summary>
+ <param name="messages">List of <see cref="T:System.Net.Mail.MailMessage">messages</see></param>
+ </member>
+ <member name="M:Castle.Core.Smtp.DefaultSmtpSender.#ctor(System.String)">
+ <summary>
+ This service implementation
+ requires a host name in order to work
+ </summary>
+ <param name="hostname">The smtp server name</param>
+ </member>
+ <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.String,System.String,System.String,System.String)">
+ <summary>
+ Sends a message.
+ </summary>
+ <exception cref="T:System.ArgumentNullException">If any of the parameters is null</exception>
+ <param name="from">From field</param>
+ <param name="to">To field</param>
+ <param name="subject">e-mail's subject</param>
+ <param name="messageText">message's body</param>
+ </member>
+ <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Send(System.Net.Mail.MailMessage)">
+ <summary>
+ Sends a message.
+ </summary>
+ <exception cref="T:System.ArgumentNullException">If the message is null</exception>
+ <param name="message">Message instance</param>
+ </member>
+ <member name="M:Castle.Core.Smtp.DefaultSmtpSender.Configure(System.Net.Mail.SmtpClient)">
+ <summary>
+ Configures the sender
+ with port information and eventual credential
+ informed
+ </summary>
+ <param name="smtpClient">Message instance</param>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Port">
+ <summary>
+ Gets or sets the port used to
+ access the SMTP server
+ </summary>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Hostname">
+ <summary>
+ Gets the hostname.
+ </summary>
+ <value>The hostname.</value>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.AsyncSend">
+ <summary>
+ Gets or sets a value which is used to
+ configure if emails are going to be sent asyncrhonously or not.
+ </summary>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Timeout">
+ <summary>
+ Gets or sets a value that specifies
+ the amount of time after which a synchronous Send call times out.
+ </summary>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UseSsl">
+ <summary>
+ Gets or sets a value indicating whether the email should be sent using
+ a secure communication channel.
+ </summary>
+ <value><c>true</c> if should use SSL; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Domain">
+ <summary>
+ Gets or sets the domain.
+ </summary>
+ <value>The domain.</value>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.UserName">
+ <summary>
+ Gets or sets the name of the user.
+ </summary>
+ <value>The name of the user.</value>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.Password">
+ <summary>
+ Gets or sets the password.
+ </summary>
+ <value>The password.</value>
+ </member>
+ <member name="P:Castle.Core.Smtp.DefaultSmtpSender.HasCredentials">
+ <summary>
+ Gets a value indicating whether credentials were informed.
+ </summary>
+ <value>
+ <see langword="true"/> if this instance has credentials; otherwise, <see langword="false"/>.
+ </value>
+ </member>
<member name="T:Castle.Core.IServiceEnabledComponent">
<summary>
Defines that the implementation wants a
Modified: trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.dll
===================================================================
(Binary files differ)
Modified: trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.xml
===================================================================
--- trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.xml 2010-01-27 15:58:40 UTC (rev 4940)
+++ trunk/nhibernate/lib/net/3.5/Castle.DynamicProxy2.xml 2010-02-01 12:06:34 UTC (rev 4941)
@@ -4,42 +4,42 @@
<name>Castle.DynamicProxy2</name>
</assembly>
<members>
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference">
+ <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.IsAccessible(System.Reflection.MethodBase)">
<summary>
- Wraps a reference that is passed
- ByRef and provides indirect load/store support.
+ Checks if the method is public or protected.
</summary>
+ <param name="method"></param>
+ <returns></returns>
</member>
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression">
+ <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)">
<summary>
- Summary description for NewArrayExpression.
+ Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/>
+ to select methods.
</summary>
+ <param name="method"></param>
+ <param name="onlyVirtuals"></param>
+ <param name="hook"></param>
+ <returns></returns>
</member>
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression">
+ <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor">
<summary>
-
+ Interface describing elements composing generated type
</summary>
</member>
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])">
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference">
<summary>
- 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).
+ Wraps a reference that is passed
+ ByRef and provides indirect load/store support.
</summary>
</member>
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)">
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression">
<summary>
- 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.
+ Summary description for NewArrayExpression.
</summary>
</member>
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.ConvertValue(System.Object,System.Type)">
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression">
<summary>
- 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).
+
</summary>
</member>
<member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary">
@@ -103,161 +103,138 @@
for the type of primitive value to be stored indirectly.
</summary>
</member>
- <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
+ <member name="M:Castle.DynamicProxy.Generators.Emitters.TypeUtil.GetAllInterfaces(System.Type[])">
<summary>
- Base class that exposes the common functionalities
- to proxy generation.
+ Returns list of all unique interfaces implemented given types, including their base interfaces.
</summary>
- <remarks>
- TODO:
- - Add tests and fixes for 'leaking this' problem
- </remarks>
- </member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GetProxyTargetReference">
- <summary>
- Used by dinamically implement <see cref="T:Castle.Core.Interceptor.IProxyTargetAccessor"/>
- </summary>
+ <param name="types"></param>
<returns></returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)">
<summary>
- Generates a parameters constructor that initializes the proxy
- state with <see cref="T:Castle.Core.Interceptor.StandardInterceptor"/> just to make it non-null.
- <para>
- This constructor is important to allow proxies to be XML serializable
- </para>
+ Handles error during disassembly process
</summary>
+ <param name="attributeType">Type of the attribute being disassembled</param>
+ <param name="exception">Exception thrown during the process</param>
+ <returns>usually null, or (re)throws the exception</returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.BuildInvocationNestedType(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,System.Type,System.Reflection.MethodInfo,System.Reflection.MethodInfo,Castle.DynamicProxy.Generators.ConstructorVersion)">
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])">
<summary>
- If callbackMethod is null the InvokeOnTarget implementation
- is just the code to throw an 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).
</summary>
- <param name="emitter"></param>
- <param name="targetType"></param>
- <param name="targetForInvocation"></param>
- <param name="methodInfo"></param>
- <param name="callbackMethod"></param>
- <param name="version"></param>
- <returns></returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.BuildInvocationNestedType(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,System.Type,System.Reflection.MethodInfo,System.Reflection.MethodInfo,Castle.DynamicProxy.Generators.ConstructorVersion,System.Boolean)">
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)">
<summary>
- If callbackMethod is null the InvokeOnTarget implementation
- is just the code to throw an exception
+ 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.
</summary>
- <param name="emitter"></param>
- <param name="targetType"></param>
- <param name="targetForInvocation"></param>
- <param name="methodInfo"></param>
- <param name="callbackMethod"></param>
- <param name="version"></param>
- <param name="allowChangeTarget">If true the invocation will implement the IChangeProxyTarget interface</param>
- <returns></returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.CreateIInvocationConstructor(System.Type,Castle.DynamicProxy.Generators.Emitters.NestedClassEmitter,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference,Castle.DynamicProxy.Generators.ConstructorVersion)">
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)">
<summary>
- Generates the constructor for the nested class that extends
- <see cref="T:Castle.DynamicProxy.AbstractInvocation"/>
+ 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).
</summary>
- <param name="targetFieldType"></param>
- <param name="nested"></param>
- <param name="targetField"></param>
- <param name="version"></param>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.CreateInitializeCacheMethodBody(System.Type,System.Reflection.MethodInfo[],Castle.DynamicProxy.Generators.Emitters.ClassEmitter,Castle.DynamicProxy.Generators.Emitters.ConstructorEmitter)">
+ <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
<summary>
- Improvement: this cache should be static. We should generate a
- type constructor instead
+ Base class that exposes the common functionalities
+ to proxy generation.
</summary>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AcceptMethod(System.Reflection.MethodInfo,System.Boolean)">
+ <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
<summary>
- Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/>
- to select methods.
+ Generates a parameters constructor that initializes the proxy
+ state with <see cref="T:Castle.Core.Interceptor.StandardInterceptor"/> just to make it non-null.
+ <para>
+ This constructor is important to allow proxies to be XML serializable
+ </para>
</summary>
- <param name="method"></param>
- <param name="onlyVirtuals"></param>
- <returns></returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.IsAccessible(System.Reflection.MethodInfo)">
+ <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})">
<summary>
- Checks if the method is public or protected.
+ It is safe to add mapping (no mapping for the interface exists)
</summary>
- <param name="method"></param>
- <returns></returns>
+ <param name="implementer"></param>
+ <param name="interface"></param>
+ <param name="mapping"></param>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.ShouldSkipAttributeReplication(System.Attribute)">
+ <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
<summary>
- 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 <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
</summary>
+ <param name="target">Target element. This is either target type or target method for invocation types.</param>
+ <param name="type">The type of the proxy. This is base type for invocation types.</param>
+ <param name="interfaces">The interfaces.</param>
+ <param name="options">The options.</param>
</member>
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.ShouldCreateNewSlot(System.Reflection.MethodInfo)">
- <summary>
- Checks if the method has the same signature as a method that was marked as
- one that should generate a new vtable slot.
- </summary>
- </member>
<member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
<summary>
Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
</summary>
- <param name="targetType">Type of the target.</param>
+ <param name="target">Type of the target.</param>
<param name="interfaces">The interfaces.</param>
<param name="options">The options.</param>
</member>
- <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
+ <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetCtorArgumentsAndBaseCtorToCall(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)">
<summary>
-
+ Generates the constructor for the class that extends
+ <see cref="T:Castle.DynamicProxy.AbstractInvocation"/>
</summary>
+ <param name="targetFieldType"></param>
+ <param name="proxyGenerationOptions"></param>
+ <param name="baseConstructor"></param>
</member>
- <member name="M:Castle.DynamicProxy.Generators.EventToGenerate.#ctor(Castle.DynamicProxy.Generators.Emitters.EventEmitter,System.Reflection.MethodInfo,System.Reflection.MethodInfo,System.Reflection.EventAttributes)">
+ <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
<summary>
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.EventToGenerate"/> class.
+
</summary>
- <param name="emitter">The emitter.</param>
- <param name="addMethod">The add method.</param>
- <param name="removeMethod">The remove method.</param>
- <param name="attributes">The attributes.</param>
</member>
- <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
+ <member name="T:Castle.DynamicProxy.Generators.INamingScope">
<summary>
-
+ Represents the scope of uniquenes of names for types and their members
</summary>
</member>
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.FindMethodOnTargetType(System.Reflection.MethodInfo,System.Type,System.Boolean)">
+ <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)">
<summary>
- Finds the type of the method on target.
+ Gets a unique name based on <paramref name="suggestedName"/>
</summary>
- <param name="methodOnInterface">The method on interface.</param>
- <param name="proxyTargetType">Type of the proxy target.</param>
- /// <param name="checkMixins">if set to <c>true</c> will check implementation on mixins.</param>
- <returns></returns>
+ <param name="suggestedName">Name suggested by the caller</param>
+ <returns>Unique name based on <paramref name="suggestedName"/>.</returns>
+ <remarks>
+ Implementers should provide name as closely resembling <paramref name="suggestedName"/> 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 <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> 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.
+ </remarks>
</member>
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.IsTypeEquivalent(System.Type,System.Type)">
+ <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope">
<summary>
- Checks whether the given types are the same. This is
- more complicated than it looks.
+ 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.
</summary>
- <param name="sourceType"></param>
- <param name="targetType"></param>
- <returns></returns>
+ <returns>New naming scope.</returns>
</member>
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.IsMethodEquivalent(System.Reflection.MethodInfo,System.Reflection.MethodInfo)">
+ <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
<summary>
- Checks whether the given methods are the same.
+
</summary>
- <param name="methodInfo"></param>
- <param name="methodOnInterface"></param>
- <returns>True if the methods are the same.</returns>
</member>
- <member name="T:Castle.DynamicProxy.Generators.InterfaceGeneratorType">
+ <member name="M:Castle.DynamicProxy.Generators.MetaEvent.#ctor(System.String,System.Type,System.Type,Castle.DynamicProxy.Generators.MetaMethod,Castle.DynamicProxy.Generators.MetaMethod,System.Reflection.EventAttributes)">
<summary>
- This is used by the ProxyObjectReference class durin de-serialiation, to know
- which generator it should use
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class.
</summary>
+ <param name="name">The name.</param>
+ <param name="declaringType">Type declaring the original event being overriten, or null.</param>
+ <param name="eventDelegateType"></param>
+ <param name="adder">The add method.</param>
+ <param name="remover">The remove method.</param>
+ <param name="attributes">The attributes.</param>
</member>
<member name="T:Castle.DynamicProxy.Generators.MethodFinder">
<summary>
@@ -292,6 +269,41 @@
might use more than one scope at the same time), <see cref="T:Castle.DynamicProxy.Serialization.ProxyObjectReference"/> uses a dedicated scope instance for deserializing proxy
types. This instance can be reset and set to a specific value via <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.ResetScope"/> and <see cref="M:Castle.DynamicProxy.Serialization.ProxyObjectReference.SetScope(Castle.DynamicProxy.ModuleScope)"/>.</value>
</member>
+ <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods">
+ <summary>
+ Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class.
+ </summary>
+ </member>
+ <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods">
+ <summary>
+ Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class.
+ </summary>
+ </member>
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool">
+ <summary>
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/>
+ </summary>
+ </member>
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32">
+ <summary>
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/>
+ </summary>
+ </member>
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object">
+ <summary>
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/>
+ </summary>
+ </member>
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue">
+ <summary>
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/>
+ </summary>
+ </member>
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType">
+ <summary>
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/>
+ </summary>
+ </member>
<member name="T:Castle.DynamicProxy.IProxyGenerationHook">
<summary>
Used during the target type inspection process. Implementors have a chance to customize the
@@ -323,6 +335,24 @@
Invoked by the generation process to notify that the whole process has completed.
</summary>
</member>
+ <member name="M:Castle.DynamicProxy.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)">
+ <summary>
+ Registers custom disassembler to handle disassembly of specified type of attributes.
+ </summary>
+ <typeparam name="TAttribute">Type of attributes to handle</typeparam>
+ <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param>
+ <remarks>
+ 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 <see cref="P:Castle.DynamicProxy.AttributeUtil.FallbackDisassembler"/>.
+ </remarks>
+ </member>
+ <member name="M:Castle.DynamicProxy.AttributeUtil.ShouldSkipAttributeReplication(System.Type)">
+ <summary>
+ 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.
+ </summary>
+ </member>
<member name="T:Castle.DynamicProxy.CacheMappingsAttribute">
<summary>
Applied to the assemblies saved by <see cref="T:Castle.DynamicProxy.ModuleScope"/> in order to persist the cache data included in the persisted assembly.
@@ -369,6 +399,24 @@
pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
<seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
</member>
+ <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
+ <summary>
+ Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
+ </summary>
+ <param name="classToProxy">The class type to proxy.</param>
+ <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
+ <param name="options">The proxy generation options.</param>
+ <returns>The generated proxy type.</returns>
+ <remarks>
+ 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 <see cref="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)"/> method.)
+ </remarks>
+ <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
+ <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
+ Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/>
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
+ <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
+ </member>
<member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
<summary>
Creates a proxy type that proxies calls to <paramref name="interfaceToProxy"/> members on <paramref name="targetType"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
@@ -424,6 +472,11 @@
pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
<seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/>
</member>
+ <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger">
+ <summary>
+ Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to.
+ </summary>
+ </member>
<member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope">
<summary>
Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder.
@@ -441,33 +494,6 @@
</summary>
<param name="scope">The module scope for generated proxy types.</param>
</member>
- <member name="T:Castle.DynamicProxy.IInterceptorSelector">
- <summary>
- Provides an extension point that allows proxies to choose specific interceptors on
- a per method basis.
- </summary>
- </member>
- <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.Core.Interceptor.IInterceptor[])">
- <summary>
- Selects the interceptors that should intercept calls to the given <paramref name="method"/>.
- </summary>
- <param name="type">The type declaring the method to intercept.</param>
- <param name="method">The method that will be intercepted.</param>
- <param name="interceptors">All interceptors registered with the proxy.</param>
- <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns>
- <remarks>
- This method is called only once per proxy instance, upon the first call to the
- <paramref name="method"/>. 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 <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations than these provided in
- <paramref name="interceptors"/>. A better way to do this, is by passing all the required
- interceptors to the appropriate method of <see cref="T:Castle.DynamicProxy.ProxyGenerator"/>. You can use this
- method to influence the order in which interceptors will be called, by reordering the array.
- Returning an array containing null references (Nothing in Visual Basic) is not legal,
- and will result in a runtime exception.
- </remarks>
- <seealso cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/>
- </member>
<member name="M:Castle.DynamicProxy.InternalsHelper.IsInternalToDynamicProxy(System.Reflection.Assembly)">
<summary>
Determines whether this assembly has internals visible to dynamic proxy.
@@ -532,6 +558,18 @@
<param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
<param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
</member>
+ <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
+ should be saved and what simple names are to be assigned to them.
+ </summary>
+ <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
+ <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param>
+ <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+ <param name="strongModulePath">The path and file name of the manifest module of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+ <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+ <param name="weakModulePath">The path and file name of the manifest module of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
+ </member>
<member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)">
<summary>
Returns a type from this scope's type cache, or null if the key cannot be found.
@@ -619,7 +657,7 @@
to avoid the performance hit associated with proxy generation.
</remarks>
</member>
- <member name="P:Castle.DynamicProxy.ModuleScope.RWLock">
+ <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
<summary>
Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache.
</summary>
@@ -726,11 +764,13 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.Core.Interceptor.IInterceptor[])"/> method.
This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
</member>
- <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
<summary>
Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
</summary>
@@ -747,6 +787,8 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])"/> method.
This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
@@ -770,6 +812,8 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.Core.Interceptor.IInterceptor[])"/> method.
This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
@@ -794,6 +838,8 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
<remarks>
+ This method generates new proxy type for each type of <paramref name="target"/>, which affects performance. If you don't want to proxy types differently depending on the type of the target
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])"/> method.
This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
</remarks>
@@ -818,6 +864,8 @@
<exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
<exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramr...
[truncated message content] |