castle.dynamicproxy2 2.1.0.0 → 2.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,42 +4,42 @@
4
4
  <name>Castle.DynamicProxy2</name>
5
5
  </assembly>
6
6
  <members>
7
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference">
7
+ <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.IsAccessible(System.Reflection.MethodBase)">
8
8
  <summary>
9
- Wraps a reference that is passed
10
- ByRef and provides indirect load/store support.
9
+ Checks if the method is public or protected.
11
10
  </summary>
11
+ <param name="method"></param>
12
+ <returns></returns>
12
13
  </member>
13
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression">
14
+ <member name="M:Castle.DynamicProxy.Contributors.MembersCollector.AcceptMethod(System.Reflection.MethodInfo,System.Boolean,Castle.DynamicProxy.IProxyGenerationHook)">
14
15
  <summary>
15
- Summary description for NewArrayExpression.
16
+ Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/>
17
+ to select methods.
16
18
  </summary>
19
+ <param name="method"></param>
20
+ <param name="onlyVirtuals"></param>
21
+ <param name="hook"></param>
22
+ <returns></returns>
17
23
  </member>
18
- <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression">
24
+ <member name="T:Castle.DynamicProxy.Contributors.ITypeContributor">
19
25
  <summary>
20
-
26
+ Interface describing elements composing generated type
21
27
  </summary>
22
28
  </member>
23
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])">
29
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.IndirectReference">
24
30
  <summary>
25
- Here we try to match a constructor argument to its value.
26
- Since we can't get the values from the assembly, we use some heuristics to get it.
27
- a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument
28
- b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string).
31
+ Wraps a reference that is passed
32
+ ByRef and provides indirect load/store support.
29
33
  </summary>
30
34
  </member>
31
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)">
35
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.NewArrayExpression">
32
36
  <summary>
33
- We have the following rules here.
34
- Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that
35
- we can convert it.
37
+ Summary description for NewArrayExpression.
36
38
  </summary>
37
39
  </member>
38
- <member name="M:Castle.DynamicProxy.Generators.Emitters.CustomAttributeUtil.ConvertValue(System.Object,System.Type)">
40
+ <member name="T:Castle.DynamicProxy.Generators.Emitters.SimpleAST.ReferencesToObjectArrayExpression">
39
41
  <summary>
40
- Attributes can only accept simple types, so we return null for null,
41
- if the value is passed as string we call to string (should help with converting),
42
- otherwise, we use the value as is (enums, integer, etc).
42
+
43
43
  </summary>
44
44
  </member>
45
45
  <member name="T:Castle.DynamicProxy.Generators.Emitters.LdcOpCodesDictionary">
@@ -103,161 +103,138 @@
103
103
  for the type of primitive value to be stored indirectly.
104
104
  </summary>
105
105
  </member>
106
- <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
107
- <summary>
108
- Base class that exposes the common functionalities
109
- to proxy generation.
110
- </summary>
111
- <remarks>
112
- TODO:
113
- - Add tests and fixes for 'leaking this' problem
114
- </remarks>
115
- </member>
116
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GetProxyTargetReference">
106
+ <member name="M:Castle.DynamicProxy.Generators.Emitters.TypeUtil.GetAllInterfaces(System.Type[])">
117
107
  <summary>
118
- Used by dinamically implement <see cref="T:Castle.Core.Interceptor.IProxyTargetAccessor"/>
108
+ Returns list of all unique interfaces implemented given types, including their base interfaces.
119
109
  </summary>
110
+ <param name="types"></param>
120
111
  <returns></returns>
121
112
  </member>
122
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
113
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.HandleError(System.Type,System.Exception)">
123
114
  <summary>
124
- Generates a parameters constructor that initializes the proxy
125
- state with <see cref="T:Castle.Core.Interceptor.StandardInterceptor"/> just to make it non-null.
126
- <para>
127
- This constructor is important to allow proxies to be XML serializable
128
- </para>
129
- </summary>
130
- </member>
131
- <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)">
132
- <summary>
133
- If callbackMethod is null the InvokeOnTarget implementation
134
- is just the code to throw an exception
115
+ Handles error during disassembly process
135
116
  </summary>
136
- <param name="emitter"></param>
137
- <param name="targetType"></param>
138
- <param name="targetForInvocation"></param>
139
- <param name="methodInfo"></param>
140
- <param name="callbackMethod"></param>
141
- <param name="version"></param>
142
- <returns></returns>
117
+ <param name="attributeType">Type of the attribute being disassembled</param>
118
+ <param name="exception">Exception thrown during the process</param>
119
+ <returns>usually null, or (re)throws the exception</returns>
143
120
  </member>
144
- <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)">
121
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.InitializeConstructorArgs(System.Type,System.Attribute,System.Object[],System.Reflection.ParameterInfo[])">
145
122
  <summary>
146
- If callbackMethod is null the InvokeOnTarget implementation
147
- is just the code to throw an exception
123
+ Here we try to match a constructor argument to its value.
124
+ Since we can't get the values from the assembly, we use some heuristics to get it.
125
+ a/ we first try to match all the properties on the attributes by name (case insensitive) to the argument
126
+ b/ if we fail we try to match them by property type, with some smarts about convertions (i,e: can use Guid for string).
148
127
  </summary>
149
- <param name="emitter"></param>
150
- <param name="targetType"></param>
151
- <param name="targetForInvocation"></param>
152
- <param name="methodInfo"></param>
153
- <param name="callbackMethod"></param>
154
- <param name="version"></param>
155
- <param name="allowChangeTarget">If true the invocation will implement the IChangeProxyTarget interface</param>
156
- <returns></returns>
157
128
  </member>
158
- <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)">
129
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ReplaceIfBetterMatch(System.Reflection.ParameterInfo,System.Reflection.PropertyInfo,System.Reflection.PropertyInfo)">
159
130
  <summary>
160
- Generates the constructor for the nested class that extends
161
- <see cref="T:Castle.DynamicProxy.AbstractInvocation"/>
131
+ We have the following rules here.
132
+ Try to find a matching type, failing that, if the parameter is string, get the first property (under the assumption that
133
+ we can convert it.
162
134
  </summary>
163
- <param name="targetFieldType"></param>
164
- <param name="nested"></param>
165
- <param name="targetField"></param>
166
- <param name="version"></param>
167
135
  </member>
168
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.CreateInitializeCacheMethodBody(System.Type,System.Reflection.MethodInfo[],Castle.DynamicProxy.Generators.Emitters.ClassEmitter,Castle.DynamicProxy.Generators.Emitters.ConstructorEmitter)">
136
+ <member name="M:Castle.DynamicProxy.Generators.AttributeDisassembler.ConvertValue(System.Object,System.Type)">
169
137
  <summary>
170
- Improvement: this cache should be static. We should generate a
171
- type constructor instead
138
+ Attributes can only accept simple types, so we return null for null,
139
+ if the value is passed as string we call to string (should help with converting),
140
+ otherwise, we use the value as is (enums, integer, etc).
172
141
  </summary>
173
142
  </member>
174
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AcceptMethod(System.Reflection.MethodInfo,System.Boolean)">
143
+ <member name="T:Castle.DynamicProxy.Generators.BaseProxyGenerator">
175
144
  <summary>
176
- Performs some basic screening and invokes the <see cref="T:Castle.DynamicProxy.IProxyGenerationHook"/>
177
- to select methods.
145
+ Base class that exposes the common functionalities
146
+ to proxy generation.
178
147
  </summary>
179
- <param name="method"></param>
180
- <param name="onlyVirtuals"></param>
181
- <returns></returns>
182
148
  </member>
183
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.IsAccessible(System.Reflection.MethodInfo)">
149
+ <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.GenerateParameterlessConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Type,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference)">
184
150
  <summary>
185
- Checks if the method is public or protected.
151
+ Generates a parameters constructor that initializes the proxy
152
+ state with <see cref="T:Castle.Core.Interceptor.StandardInterceptor"/> just to make it non-null.
153
+ <para>
154
+ This constructor is important to allow proxies to be XML serializable
155
+ </para>
186
156
  </summary>
187
- <param name="method"></param>
188
- <returns></returns>
189
157
  </member>
190
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.ShouldSkipAttributeReplication(System.Attribute)">
158
+ <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.AddMappingNoCheck(System.Type,Castle.DynamicProxy.Contributors.ITypeContributor,System.Collections.Generic.IDictionary{System.Type,Castle.DynamicProxy.Contributors.ITypeContributor})">
191
159
  <summary>
192
- Attributes should be replicated if they are non-inheritable,
193
- but there are some special cases where the attributes means
194
- something to the CLR, where they should be skipped.
160
+ It is safe to add mapping (no mapping for the interface exists)
195
161
  </summary>
162
+ <param name="implementer"></param>
163
+ <param name="interface"></param>
164
+ <param name="mapping"></param>
196
165
  </member>
197
- <member name="M:Castle.DynamicProxy.Generators.BaseProxyGenerator.ShouldCreateNewSlot(System.Reflection.MethodInfo)">
166
+ <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Reflection.MemberInfo,System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
198
167
  <summary>
199
- Checks if the method has the same signature as a method that was marked as
200
- one that should generate a new vtable slot.
168
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
201
169
  </summary>
170
+ <param name="target">Target element. This is either target type or target method for invocation types.</param>
171
+ <param name="type">The type of the proxy. This is base type for invocation types.</param>
172
+ <param name="interfaces">The interfaces.</param>
173
+ <param name="options">The options.</param>
202
174
  </member>
203
175
  <member name="M:Castle.DynamicProxy.Generators.CacheKey.#ctor(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
204
176
  <summary>
205
177
  Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.CacheKey"/> class.
206
178
  </summary>
207
- <param name="targetType">Type of the target.</param>
179
+ <param name="target">Type of the target.</param>
208
180
  <param name="interfaces">The interfaces.</param>
209
181
  <param name="options">The options.</param>
210
182
  </member>
211
- <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
183
+ <member name="M:Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetCtorArgumentsAndBaseCtorToCall(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Reflection.ConstructorInfo@)">
212
184
  <summary>
213
-
185
+ Generates the constructor for the class that extends
186
+ <see cref="T:Castle.DynamicProxy.AbstractInvocation"/>
214
187
  </summary>
188
+ <param name="targetFieldType"></param>
189
+ <param name="proxyGenerationOptions"></param>
190
+ <param name="baseConstructor"></param>
215
191
  </member>
216
- <member name="M:Castle.DynamicProxy.Generators.EventToGenerate.#ctor(Castle.DynamicProxy.Generators.Emitters.EventEmitter,System.Reflection.MethodInfo,System.Reflection.MethodInfo,System.Reflection.EventAttributes)">
192
+ <member name="T:Castle.DynamicProxy.Generators.ClassProxyGenerator">
217
193
  <summary>
218
- Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.EventToGenerate"/> class.
194
+
219
195
  </summary>
220
- <param name="emitter">The emitter.</param>
221
- <param name="addMethod">The add method.</param>
222
- <param name="removeMethod">The remove method.</param>
223
- <param name="attributes">The attributes.</param>
224
196
  </member>
225
- <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
197
+ <member name="T:Castle.DynamicProxy.Generators.INamingScope">
226
198
  <summary>
227
-
199
+ Represents the scope of uniquenes of names for types and their members
228
200
  </summary>
229
201
  </member>
230
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.FindMethodOnTargetType(System.Reflection.MethodInfo,System.Type,System.Boolean)">
202
+ <member name="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)">
231
203
  <summary>
232
- Finds the type of the method on target.
204
+ Gets a unique name based on <paramref name="suggestedName"/>
233
205
  </summary>
234
- <param name="methodOnInterface">The method on interface.</param>
235
- <param name="proxyTargetType">Type of the proxy target.</param>
236
- /// <param name="checkMixins">if set to <c>true</c> will check implementation on mixins.</param>
237
- <returns></returns>
206
+ <param name="suggestedName">Name suggested by the caller</param>
207
+ <returns>Unique name based on <paramref name="suggestedName"/>.</returns>
208
+ <remarks>
209
+ Implementers should provide name as closely resembling <paramref name="suggestedName"/> as possible.
210
+ Generally if no collision occurs it is suggested to return suggested name, otherwise append sequential suffix.
211
+ Implementers must return deterministic names, that is when <see cref="M:Castle.DynamicProxy.Generators.INamingScope.GetUniqueName(System.String)"/> is called twice
212
+ with the same suggested name, the same returned name should be provided each time. Non-deterministic return
213
+ values, like appending random suffices will break serialization of proxies.
214
+ </remarks>
238
215
  </member>
239
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.IsTypeEquivalent(System.Type,System.Type)">
216
+ <member name="M:Castle.DynamicProxy.Generators.INamingScope.SafeSubScope">
240
217
  <summary>
241
- Checks whether the given types are the same. This is
242
- more complicated than it looks.
218
+ Returns new, disposable naming scope. It is responsibilty of the caller to make sure that no naming collision
219
+ with enclosing scope, or other subscopes is possible.
243
220
  </summary>
244
- <param name="sourceType"></param>
245
- <param name="targetType"></param>
246
- <returns></returns>
221
+ <returns>New naming scope.</returns>
247
222
  </member>
248
- <member name="M:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.IsMethodEquivalent(System.Reflection.MethodInfo,System.Reflection.MethodInfo)">
223
+ <member name="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator">
249
224
  <summary>
250
- Checks whether the given methods are the same.
225
+
251
226
  </summary>
252
- <param name="methodInfo"></param>
253
- <param name="methodOnInterface"></param>
254
- <returns>True if the methods are the same.</returns>
255
227
  </member>
256
- <member name="T:Castle.DynamicProxy.Generators.InterfaceGeneratorType">
228
+ <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)">
257
229
  <summary>
258
- This is used by the ProxyObjectReference class durin de-serialiation, to know
259
- which generator it should use
230
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.Generators.MetaEvent"/> class.
260
231
  </summary>
232
+ <param name="name">The name.</param>
233
+ <param name="declaringType">Type declaring the original event being overriten, or null.</param>
234
+ <param name="eventDelegateType"></param>
235
+ <param name="adder">The add method.</param>
236
+ <param name="remover">The remove method.</param>
237
+ <param name="attributes">The attributes.</param>
261
238
  </member>
262
239
  <member name="T:Castle.DynamicProxy.Generators.MethodFinder">
263
240
  <summary>
@@ -292,6 +269,41 @@
292
269
  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
293
270
  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>
294
271
  </member>
272
+ <member name="T:Castle.DynamicProxy.Tokens.InvocationMethods">
273
+ <summary>
274
+ Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:Castle.DynamicProxy.AbstractInvocation"/> class.
275
+ </summary>
276
+ </member>
277
+ <member name="T:Castle.DynamicProxy.Tokens.SerializationInfoMethods">
278
+ <summary>
279
+ Holds <see cref="T:System.Reflection.MethodInfo"/> objects representing methods of <see cref="T:System.Runtime.Serialization.SerializationInfo"/> class.
280
+ </summary>
281
+ </member>
282
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Bool">
283
+ <summary>
284
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Boolean)"/>
285
+ </summary>
286
+ </member>
287
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Int32">
288
+ <summary>
289
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Int32)"/>
290
+ </summary>
291
+ </member>
292
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.AddValue_Object">
293
+ <summary>
294
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.Object)"/>
295
+ </summary>
296
+ </member>
297
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.GetValue">
298
+ <summary>
299
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.GetValue(System.String,System.Type)"/>
300
+ </summary>
301
+ </member>
302
+ <member name="F:Castle.DynamicProxy.Tokens.SerializationInfoMethods.SetType">
303
+ <summary>
304
+ <see cref="M:System.Runtime.Serialization.SerializationInfo.SetType(System.Type)"/>
305
+ </summary>
306
+ </member>
295
307
  <member name="T:Castle.DynamicProxy.IProxyGenerationHook">
296
308
  <summary>
297
309
  Used during the target type inspection process. Implementors have a chance to customize the
@@ -323,6 +335,24 @@
323
335
  Invoked by the generation process to notify that the whole process has completed.
324
336
  </summary>
325
337
  </member>
338
+ <member name="M:Castle.DynamicProxy.AttributeUtil.AddDisassembler``1(Castle.DynamicProxy.IAttributeDisassembler)">
339
+ <summary>
340
+ Registers custom disassembler to handle disassembly of specified type of attributes.
341
+ </summary>
342
+ <typeparam name="TAttribute">Type of attributes to handle</typeparam>
343
+ <param name="disassembler">Disassembler converting existing instances of Attributes to CustomAttributeBuilders</param>
344
+ <remarks>
345
+ When disassembling an attribute Dynamic Proxy will first check if an custom disassembler has been registered to handle attributes of that type,
346
+ and if none is found, it'll use the <see cref="P:Castle.DynamicProxy.AttributeUtil.FallbackDisassembler"/>.
347
+ </remarks>
348
+ </member>
349
+ <member name="M:Castle.DynamicProxy.AttributeUtil.ShouldSkipAttributeReplication(System.Type)">
350
+ <summary>
351
+ Attributes should be replicated if they are non-inheritable,
352
+ but there are some special cases where the attributes means
353
+ something to the CLR, where they should be skipped.
354
+ </summary>
355
+ </member>
326
356
  <member name="T:Castle.DynamicProxy.CacheMappingsAttribute">
327
357
  <summary>
328
358
  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 @@
369
399
  pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
370
400
  <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
371
401
  </member>
402
+ <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateClassProxyType(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
403
+ <summary>
404
+ Creates a proxy type for given <paramref name="classToProxy"/>, implementing <paramref name="additionalInterfacesToProxy"/>, using <paramref name="options"/> provided.
405
+ </summary>
406
+ <param name="classToProxy">The class type to proxy.</param>
407
+ <param name="additionalInterfacesToProxy">Additional interface types to proxy.</param>
408
+ <param name="options">The proxy generation options.</param>
409
+ <returns>The generated proxy type.</returns>
410
+ <remarks>
411
+ Implementers should return a proxy type for the specified class and interfaces.
412
+ 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.)
413
+ </remarks>
414
+ <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
415
+ <exception cref="T:Castle.DynamicProxy.Generators.GeneratorException">Thrown when <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is not public.
416
+ Note that to avoid this exception, you can mark offending type internal, and define <see cref="T:System.Runtime.CompilerServices.InternalsVisibleToAttribute"/>
417
+ pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
418
+ <seealso cref="T:Castle.DynamicProxy.Generators.ClassProxyGenerator"/>
419
+ </member>
372
420
  <member name="M:Castle.DynamicProxy.IProxyBuilder.CreateInterfaceProxyTypeWithTarget(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
373
421
  <summary>
374
422
  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 @@
424
472
  pointing to Castle Dynamic Proxy assembly, in assembly containing that type, if this is appropriate.</exception>
425
473
  <seealso cref="T:Castle.DynamicProxy.Generators.InterfaceProxyWithTargetInterfaceGenerator"/>
426
474
  </member>
475
+ <member name="P:Castle.DynamicProxy.IProxyBuilder.Logger">
476
+ <summary>
477
+ Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> logs to.
478
+ </summary>
479
+ </member>
427
480
  <member name="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope">
428
481
  <summary>
429
482
  Gets the <see cref="P:Castle.DynamicProxy.IProxyBuilder.ModuleScope"/> associated with this builder.
@@ -441,33 +494,6 @@
441
494
  </summary>
442
495
  <param name="scope">The module scope for generated proxy types.</param>
443
496
  </member>
444
- <member name="T:Castle.DynamicProxy.IInterceptorSelector">
445
- <summary>
446
- Provides an extension point that allows proxies to choose specific interceptors on
447
- a per method basis.
448
- </summary>
449
- </member>
450
- <member name="M:Castle.DynamicProxy.IInterceptorSelector.SelectInterceptors(System.Type,System.Reflection.MethodInfo,Castle.Core.Interceptor.IInterceptor[])">
451
- <summary>
452
- Selects the interceptors that should intercept calls to the given <paramref name="method"/>.
453
- </summary>
454
- <param name="type">The type declaring the method to intercept.</param>
455
- <param name="method">The method that will be intercepted.</param>
456
- <param name="interceptors">All interceptors registered with the proxy.</param>
457
- <returns>An array of interceptors to invoke upon calling the <paramref name="method"/>.</returns>
458
- <remarks>
459
- This method is called only once per proxy instance, upon the first call to the
460
- <paramref name="method"/>. Either an empty array or null are valid return values to indicate
461
- that no interceptor should intercept calls to the method. Although it is not advised, it is
462
- legal to return other <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations than these provided in
463
- <paramref name="interceptors"/>. A better way to do this, is by passing all the required
464
- interceptors to the appropriate method of <see cref="T:Castle.DynamicProxy.ProxyGenerator"/>. You can use this
465
- method to influence the order in which interceptors will be called, by reordering the array.
466
- Returning an array containing null references (Nothing in Visual Basic) is not legal,
467
- and will result in a runtime exception.
468
- </remarks>
469
- <seealso cref="T:Castle.DynamicProxy.ProxyGenerationOptions"/>
470
- </member>
471
497
  <member name="M:Castle.DynamicProxy.InternalsHelper.IsInternalToDynamicProxy(System.Reflection.Assembly)">
472
498
  <summary>
473
499
  Determines whether this assembly has internals visible to dynamic proxy.
@@ -532,6 +558,18 @@
532
558
  <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
533
559
  <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>
534
560
  </member>
561
+ <member name="M:Castle.DynamicProxy.ModuleScope.#ctor(System.Boolean,Castle.DynamicProxy.Generators.INamingScope,System.String,System.String,System.String,System.String)">
562
+ <summary>
563
+ Initializes a new instance of the <see cref="T:Castle.DynamicProxy.ModuleScope"/> class, allowing to specify whether the assemblies generated by this instance
564
+ should be saved and what simple names are to be assigned to them.
565
+ </summary>
566
+ <param name="savePhysicalAssembly">If set to <c>true</c> saves the generated module.</param>
567
+ <param name="namingScope">Naming scope used to provide unique names to generated types and their members (usually via sub-scopes).</param>
568
+ <param name="strongAssemblyName">The simple name of the strong-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
569
+ <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>
570
+ <param name="weakAssemblyName">The simple name of the weak-named assembly generated by this <see cref="T:Castle.DynamicProxy.ModuleScope"/>.</param>
571
+ <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>
572
+ </member>
535
573
  <member name="M:Castle.DynamicProxy.ModuleScope.GetFromCache(Castle.DynamicProxy.Generators.CacheKey)">
536
574
  <summary>
537
575
  Returns a type from this scope's type cache, or null if the key cannot be found.
@@ -619,7 +657,7 @@
619
657
  to avoid the performance hit associated with proxy generation.
620
658
  </remarks>
621
659
  </member>
622
- <member name="P:Castle.DynamicProxy.ModuleScope.RWLock">
660
+ <member name="P:Castle.DynamicProxy.ModuleScope.Lock">
623
661
  <summary>
624
662
  Users of this <see cref="T:Castle.DynamicProxy.ModuleScope"/> should use this lock when accessing the cache.
625
663
  </summary>
@@ -726,11 +764,13 @@
726
764
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
727
765
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
728
766
  <remarks>
767
+ 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
768
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.Core.Interceptor.IInterceptor[])"/> method.
729
769
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
730
770
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
731
771
  </remarks>
732
772
  </member>
733
- <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
773
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTarget``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
734
774
  <summary>
735
775
  Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
736
776
  </summary>
@@ -747,6 +787,8 @@
747
787
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
748
788
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
749
789
  <remarks>
790
+ 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
791
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])"/> method.
750
792
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
751
793
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
752
794
  </remarks>
@@ -770,6 +812,8 @@
770
812
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
771
813
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
772
814
  <remarks>
815
+ 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
816
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.Core.Interceptor.IInterceptor[])"/> method.
773
817
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
774
818
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
775
819
  </remarks>
@@ -794,6 +838,8 @@
794
838
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
795
839
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
796
840
  <remarks>
841
+ 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
842
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])"/> method.
797
843
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
798
844
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
799
845
  </remarks>
@@ -818,6 +864,8 @@
818
864
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
819
865
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
820
866
  <remarks>
867
+ 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
868
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.Core.Interceptor.IInterceptor[])"/> method.
821
869
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
822
870
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
823
871
  </remarks>
@@ -843,6 +891,8 @@
843
891
  <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
844
892
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
845
893
  <remarks>
894
+ 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
895
+ use <see cref="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])"/> method.
846
896
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
847
897
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
848
898
  </remarks>
@@ -871,6 +921,74 @@
871
921
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
872
922
  </remarks>
873
923
  </member>
924
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.Core.Interceptor.IInterceptor[])">
925
+ <summary>
926
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
927
+ Interceptors can use <see cref="T:Castle.Core.Interceptor.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
928
+ </summary>
929
+ <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
930
+ <param name="target">The target object, calls to which will be intercepted.</param>
931
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
932
+ <returns>
933
+ Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
934
+ </returns>
935
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
936
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
937
+ <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
938
+ <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
939
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
940
+ <remarks>
941
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
942
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
943
+ </remarks>
944
+ </member>
945
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface``1(``0,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
946
+ <summary>
947
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
948
+ Interceptors can use <see cref="T:Castle.Core.Interceptor.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
949
+ </summary>
950
+ <typeparam name="TInterface">Type of the interface implemented by <paramref name="target"/> which will be proxied.</typeparam>
951
+ <param name="target">The target object, calls to which will be intercepted.</param>
952
+ <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
953
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
954
+ <returns>
955
+ Object proxying calls to members of <typeparamref name="TInterface"/> type on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
956
+ </returns>
957
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
958
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
959
+ <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
960
+ <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
961
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
962
+ <remarks>
963
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
964
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
965
+ </remarks>
966
+ </member>
967
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Type[],System.Object,Castle.Core.Interceptor.IInterceptor[])">
968
+ <summary>
969
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
970
+ Interceptors can use <see cref="T:Castle.Core.Interceptor.IChangeProxyTarget"/> interface to provide other target for method invocation than default <paramref name="target"/>.
971
+ </summary>
972
+ <param name="interfaceToProxy">Type of the interface implemented by <paramref name="target"/> which will be proxied.</param>
973
+ <param name="target">The target object, calls to which will be intercepted.</param>
974
+ <param name="additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>
975
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
976
+ <returns>
977
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> and <paramref name="additionalInterfacesToProxy"/> types on <paramref name="target"/> object or alternative implementation swapped at runtime by an interceptor.
978
+ </returns>
979
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
980
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="target"/> object is a null reference (Nothing in Visual Basic).</exception>
981
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
982
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
983
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
984
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="target"/> does not implement <paramref name="interfaceToProxy"/> interface.</exception>
985
+ <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name="target"/> object.</exception>
986
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of actual type of <paramref name="target"/> throws an exception.</exception>
987
+ <remarks>
988
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
989
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
990
+ </remarks>
991
+ </member>
874
992
  <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithTargetInterface(System.Type,System.Object,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
875
993
  <summary>
876
994
  Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on <paramref name="target"/> object with given <paramref name="interceptors"/>.
@@ -931,11 +1049,12 @@
931
1049
  <returns>
932
1050
  Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
933
1051
  </returns>
934
- <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> object is a null reference (Nothing in Visual Basic).</exception>
1052
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception>
935
1053
  <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
936
1054
  <remarks>
937
1055
  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 <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations.
938
1056
  They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
1057
+ As a result of that also at least one <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementation must be provided.
939
1058
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
940
1059
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
941
1060
  </remarks>
@@ -959,17 +1078,37 @@
959
1078
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
960
1079
  </remarks>
961
1080
  </member>
1081
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
1082
+ <summary>
1083
+ Creates proxy object intercepting calls to members of interface <typeparamref name="TInterface"/> on target object generated at runtime with given <paramref name="interceptors"/>.
1084
+ </summary>
1085
+ <typeparam name="TInterface">Type of the interface which will be proxied.</typeparam>
1086
+ <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
1087
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1088
+ <returns>
1089
+ Object proxying calls to members of <typeparamref name="TInterface"/> types on generated target object.
1090
+ </returns>
1091
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
1092
+ <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TInterface"/> is not an interface type.</exception>
1093
+ <remarks>
1094
+ 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 <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementations.
1095
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
1096
+ As a result of that also at least one <see cref="T:Castle.Core.Interceptor.IInterceptor"/> implementation must be provided.
1097
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1098
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1099
+ </remarks>
1100
+ </member>
962
1101
  <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.Core.Interceptor.IInterceptor)">
963
1102
  <summary>
964
1103
  Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptor"/>.
965
1104
  </summary>
966
1105
  <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
967
- <param name="interceptor">The interceptor called during the invocation of proxied methods.</param>
1106
+ <param name="interceptor">The interceptors called during the invocation of proxied methods.</param>
968
1107
  <returns>
969
1108
  Object proxying calls to members of <paramref name="interfaceToProxy"/> type on generated target object.
970
1109
  </returns>
971
1110
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
972
- <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> object is a null reference (Nothing in Visual Basic).</exception>
1111
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptor"/> array is a null reference (Nothing in Visual Basic).</exception>
973
1112
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
974
1113
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
975
1114
  <remarks>
@@ -1020,6 +1159,26 @@
1020
1159
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1021
1160
  </remarks>
1022
1161
  </member>
1162
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
1163
+ <summary>
1164
+ Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
1165
+ </summary>
1166
+ <param name="interfaceToProxy">Type of the interface which will be proxied.</param>
1167
+ <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
1168
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1169
+ <returns>
1170
+ Object proxying calls to members of <paramref name="interfaceToProxy"/> on generated target object.
1171
+ </returns>
1172
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interfaceToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1173
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="interceptors"/> array is a null reference (Nothing in Visual Basic).</exception>
1174
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is a generic type definition.</exception>
1175
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="interfaceToProxy"/> is not an interface type.</exception>
1176
+ <remarks>
1177
+ They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see cref="M:Castle.Core.Interceptor.IInvocation.Proceed"/>, since there's no actual implementation to proceed with.
1178
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1179
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1180
+ </remarks>
1181
+ </member>
1023
1182
  <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
1024
1183
  <summary>
1025
1184
  Creates proxy object intercepting calls to members of interface <paramref name="interfaceToProxy"/> on target object generated at runtime with given <paramref name="interceptors"/>.
@@ -1052,27 +1211,26 @@
1052
1211
  New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
1053
1212
  </returns>
1054
1213
  <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
1055
- <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
1214
+ <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
1056
1215
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
1057
1216
  <remarks>
1058
1217
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1059
1218
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1060
1219
  </remarks>
1061
1220
  </member>
1062
- <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.Core.Interceptor.IInterceptor[])">
1221
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy``1(Castle.DynamicProxy.ProxyGenerationOptions,Castle.Core.Interceptor.IInterceptor[])">
1063
1222
  <summary>
1064
- Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
1223
+ Creates proxy object intercepting calls to virtual members of type <typeparamref name="TClass"/> on newly created instance of that type with given <paramref name="interceptors"/>.
1065
1224
  </summary>
1066
- <param name="classToProxy">Type of class which will be proxied.</param>
1225
+ <typeparam name="TClass">Type of class which will be proxied.</typeparam>
1226
+ <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
1067
1227
  <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1068
1228
  <returns>
1069
- New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
1229
+ New object of type <typeparamref name="TClass"/> proxying calls to virtual members of <typeparamref name="TClass"/> type.
1070
1230
  </returns>
1071
- <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1072
- <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1073
- <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1074
- <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1075
- <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1231
+ <exception cref="T:System.ArgumentException">Thrown when given <typeparamref name="TClass"/> is not a class type.</exception>
1232
+ <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <typeparamref name="TClass"/>.</exception>
1233
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <typeparamref name="TClass"/> throws an exception.</exception>
1076
1234
  <remarks>
1077
1235
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1078
1236
  As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
@@ -1091,7 +1249,7 @@
1091
1249
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1092
1250
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
1093
1251
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1094
- <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1252
+ <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1095
1253
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1096
1254
  <remarks>
1097
1255
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
@@ -1111,7 +1269,67 @@
1111
1269
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1112
1270
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1113
1271
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1114
- <exception cref="T:System.MissingMethodException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1272
+ <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1273
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1274
+ <remarks>
1275
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1276
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1277
+ </remarks>
1278
+ </member>
1279
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.DynamicProxy.ProxyGenerationOptions,System.Object[],Castle.Core.Interceptor.IInterceptor[])">
1280
+ <summary>
1281
+ Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
1282
+ </summary>
1283
+ <param name="classToProxy">Type of class which will be proxied.</param>
1284
+ <param name="options">The proxy generation options used to influence generated proxy type and object.</param>
1285
+ <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
1286
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1287
+ <returns>
1288
+ New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
1289
+ </returns>
1290
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1291
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1292
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1293
+ <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1294
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1295
+ <remarks>
1296
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1297
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1298
+ </remarks>
1299
+ </member>
1300
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,System.Object[],Castle.Core.Interceptor.IInterceptor[])">
1301
+ <summary>
1302
+ Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
1303
+ </summary>
1304
+ <param name="classToProxy">Type of class which will be proxied.</param>
1305
+ <param name="constructorArguments">Arguments of constructor of type <paramref name="classToProxy"/> which should be used to create a new instance of that type.</param>
1306
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1307
+ <returns>
1308
+ New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
1309
+ </returns>
1310
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1311
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1312
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1313
+ <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1314
+ <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1315
+ <remarks>
1316
+ This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
1317
+ As such caller should expect any type of exception that given <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation may throw.
1318
+ </remarks>
1319
+ </member>
1320
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type,Castle.Core.Interceptor.IInterceptor[])">
1321
+ <summary>
1322
+ Creates proxy object intercepting calls to virtual members of type <paramref name="classToProxy"/> on newly created instance of that type with given <paramref name="interceptors"/>.
1323
+ </summary>
1324
+ <param name="classToProxy">Type of class which will be proxied.</param>
1325
+ <param name="interceptors">The interceptors called during the invocation of proxied methods.</param>
1326
+ <returns>
1327
+ New object of type <paramref name="classToProxy"/> proxying calls to virtual members of <paramref name="classToProxy"/> type.
1328
+ </returns>
1329
+ <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="classToProxy"/> object is a null reference (Nothing in Visual Basic).</exception>
1330
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1331
+ <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1332
+ <exception cref="T:System.ArgumentException">Thrown when no parameterless constructor exists on type <paramref name="classToProxy"/>.</exception>
1115
1333
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1116
1334
  <remarks>
1117
1335
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
@@ -1132,7 +1350,7 @@
1132
1350
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
1133
1351
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is a generic type definition.</exception>
1134
1352
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1135
- <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1353
+ <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1136
1354
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1137
1355
  <remarks>
1138
1356
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
@@ -1154,7 +1372,7 @@
1154
1372
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
1155
1373
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
1156
1374
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1157
- <exception cref="T:System.MissingMethodException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1375
+ <exception cref="T:System.ArgumentException">Thrown when no default constructor exists on type <paramref name="classToProxy"/>.</exception>
1158
1376
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when default constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1159
1377
  <remarks>
1160
1378
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
@@ -1177,7 +1395,7 @@
1177
1395
  <exception cref="T:System.ArgumentNullException">Thrown when given <paramref name="options"/> object is a null reference (Nothing in Visual Basic).</exception>
1178
1396
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> or any of <paramref name="additionalInterfacesToProxy"/> is a generic type definition.</exception>
1179
1397
  <exception cref="T:System.ArgumentException">Thrown when given <paramref name="classToProxy"/> is not a class type.</exception>
1180
- <exception cref="T:System.MissingMethodException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1398
+ <exception cref="T:System.ArgumentException">Thrown when no constructor exists on type <paramref name="classToProxy"/> with parameters matching <paramref name="constructorArguments"/>.</exception>
1181
1399
  <exception cref="T:System.Reflection.TargetInvocationException">Thrown when constructor of type <paramref name="classToProxy"/> throws an exception.</exception>
1182
1400
  <remarks>
1183
1401
  This method uses <see cref="T:Castle.DynamicProxy.IProxyBuilder"/> implementation to generate a proxy type.
@@ -1203,13 +1421,12 @@
1203
1421
  <param name="options">The options for proxy generation process.</param>
1204
1422
  <returns><see cref="T:System.Type"/> of proxy.</returns>
1205
1423
  </member>
1206
- <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],System.Type,Castle.DynamicProxy.ProxyGenerationOptions)">
1424
+ <member name="M:Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(System.Type,System.Type[],Castle.DynamicProxy.ProxyGenerationOptions)">
1207
1425
  <summary>
1208
1426
  Creates the proxy type for interface proxy with target interface for given <paramref name="interfaceToProxy"/> interface, implementing given <paramref name="additionalInterfacesToProxy"/> on given <paramref name="targetType"/> and using provided <paramref name="options"/>.
1209
1427
  </summary>
1210
1428
  <param name="interfaceToProxy">The interface proxy type should implement.</param>
1211
1429
  <param name="additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>
1212
- <param name="targetType">Actual type that the proxy type will encompass.</param>
1213
1430
  <param name="options">The options for proxy generation process.</param>
1214
1431
  <returns><see cref="T:System.Type"/> of proxy.</returns>
1215
1432
  </member>
@@ -1222,6 +1439,11 @@
1222
1439
  <param name="options">The options for proxy generation process.</param>
1223
1440
  <returns><see cref="T:System.Type"/> of proxy.</returns>
1224
1441
  </member>
1442
+ <member name="P:Castle.DynamicProxy.ProxyGenerator.Logger">
1443
+ <summary>
1444
+ Gets or sets the <see cref="T:Castle.Core.Logging.ILogger"/> that this <see cref="T:Castle.DynamicProxy.ProxyGenerator"/> log to.
1445
+ </summary>
1446
+ </member>
1225
1447
  <member name="P:Castle.DynamicProxy.ProxyGenerator.ProxyBuilder">
1226
1448
  <summary>
1227
1449
  Gets the proxy builder instance used to generate proxy types.