-
Notifications
You must be signed in to change notification settings - Fork 7
/
Changes.txt
234 lines (177 loc) · 13.7 KB
/
Changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
2.2.0 (2010-01-11)
==================
- Fixed medium trust issue introduced in 2.2.0 Beta 1 where it would try to create a trace logger.
- Some changes to the way explicit interface methods are implemented to support WPF databinding.
2.2.0 Beta 1 (2009-12-04)
=========================
- Fixed DYNPROXY-ISSUE-120: Add logging to DynamicProxy.
Introduced basic logging for cache hit/miss, methods that cannot be intercepted, and overriding Equals/GetHashCode.
- Applied patch from James Curran fixing DYNPROXY-ISSUE-124: "InterfaceProxyWithoutTargetGenerator ctor missing selector parameter".
- Fixed DYNPROXY-ISSUE-105: Invocation types should be cached and shared among proxy implementations.
- BREAKING CHANGE - implemented DYNPROXY-ISSUE-91: Allow CreateInterfaceProxyWithTargetInterface to be able to permanently change target.
- Fixed DYNPROXY-ISSUE-122: "interceptor selector should not affect caching"
- Fixed DYNPROXY-ISSUE-121: "proxy with target interface incorrectly forwards to mixins"
- Added ability to change proxy target on mixin methods on interface proxy with target interface
- Added generic overloads for CreateInterfaceProxyWithTargetInterface to make it consistent with other methods
- BREAKING CHANGE - changed behavior of invocation.MethodInvocationTarget to be more consistent.
- Fixed DYNPROXY-ISSUE-117: Fix BaseTypeForInterfaceProxy. Added checks for base type being null, not a class type, being sealed and not having
default accessible constructor.
- Fixed DYNPROXY-ISSUE-112: Reimplement DefaultAttributeAssembler to make use of CustomAttributeData to avoid exceptions on unreplicable attributes.
- Fixed DYNPROXY-ISSUE-118: Can't proxy remoting transparent interface proxies.
- Fixed DYNPROXY-ISSUE-94: CreateProxyWithTarget fails if you use ProxyGenerationHook
- Fixed DYNPROXY-ISSUE-89: Proxy generation fails when IProxyGenerationHook chooses not to proxy mixin method
- Improved (a lot) range of supported scenarios, especially around generics.
- Improved exception messages in exceptions thrown at users, with short explanation of what they may have done wrong and how to fix it.
- Fixed DYNPROXY-ISSUE-113: AbstractTypeEmitter can now be used to emit interfaces
- Fixed DYNPROXY-ISSUE-108: Obtaining replicated custom attributes on proxy may fail when property setter throws exception on default value
- Moved custom attribute replication from CustomAttributeUtil to new interface - IAttributeDisassembler
- Exposed IAttributeDisassembler via ProxyGenerationOptions, so that users can plug their implementation for some convoluted scenarios.
- Fixed DYNPROXY-ISSUE-106: Proxying COM interfaces produces invalid proxies
- Change in behavior - interfaces are now implemented explicitly (except for class proxy, when class implements the member virtually)
- Fixed DYNPROXY-ISSUE-96: Implement order of precenence.
- Interface proxy now can proxy explicit interface implementation
- Fixed DYNPROXY-ISSUE-103: Proxy with interfaces having methods with identical signature is invalid
- Fixed DYNPROXY-ISSUE-102: Intercept non-virtual interface implementation
- Fixed DYNPROXY-ISSUE-100: Additional interfaces on proxy with target interface can cause stack overflow. Now a check is performed and if proxy
is the target of invocation, or the target is null an exception is thrown.
- Changed behavior of interface proxies with target interface (all interface proxies actually, but the change in behavior is visible in proxies
with target interface). Now the target is being casted using 'as' operator to the target interface of invocation, so if the type of target object
implements additional interfaces invocation target will be set to the proxy target, and to null otherwise. This is consisted with how interface
proxies with target work.
- Fixed bug reported by José F. Romaniello - can not assign new target to interface proxy with target interface, in certain scenarios:
http://groups.google.com/group/castle-project-users/browse_thread/thread/2e507f47dbb831f1
- Applied Krzysztof Kozmic's clean up patch with some minor changes
(http://groups.google.com/group/castle-project-devel/browse_thread/thread/853fa870326f7f71/9237bb890ca6dab7)
- Moved MethodInfos of AbstractInvocation methods to InvocationMethods class, where all the other methods are.
- Extracted MethodInfos obtained inline to their own classes in Castle.DynamicProxy.Tokens namespace. This should
improve performance a little bit.
- Removed two ctors from AbstractInvocation (that didn't have interfMethod parameter).
- Updated generated proxies to call other two Invocation ctors.
- Some tidying up in BaseProxyGenerator to remove duplication after updating calls to Invocation ctors.
- Removed collecting and generating tokenCaches for System.Object methods, since we never use these anyway.
- Removed redundant casts in code.
- Changed code using non-generic collections to use their generic conterparts.
- Some more minor tidying up.
- Improved exception message when can not instantiate class proxy due to invalid arguments.
- Reverted changes introduced in fix for DYNPROXY-ISSUE-97 for the constructor issue. It actually is an issue with params object[] which is confusing
and can lead to errors like the one reported, and the fix was inconsistent with the other overload that had arguments passed as explicit object[]
and could break the other overload in some scenarios.
- Marked the overload of CreateClassProxy having params object[] as obsolete
- Introduced another overload that takes constructor arguments as explicit array, and interceptors as params IInterceptor[] which is the pattern
for all other overloads anyway.
- Fixed DYNPROXY-ISSUE-99: "Generated proxy class has no namespace", which due to a bug in WPF caused issues with databinding. Now proxies are in
namespace Castle.Proxies.
- Fixed DYNPROXY-97: This issue are actually three separate bugs:
First relates to the improper handling of types with generic methods having parameters being an array of generic type of T
Second was related to improper handing of hierarchy of generic constraints, but it seems Fabian's fix to GenericUtil fixed that earlier.
Third issue was related to improper handing of certain kinds of constructor arguments passed to class proxy generator.
- Fixed DYNPROXY-90: "DP2: Inherited interfaces w/ target does not to work"
- Fixed DYNPROXY-88: "proxy generation fail when multiple interfaces have common base interface"
They both were actually special cases of one issue with invalid collection of interface members.
- Fixed DYNPROXY-92: "Proxy fails when creating a Proxy for certain Generic signatures"
The problem was that GenericUtil.cs wrongfully copied generic arguments whose constraints referenced the proxied method without adjusting those
constraints.
2.1.0 (2009-05-04)
==================
- Fixed DYNPROXY-87: "Mixin takes precedence over target object"
changed DP to throw exceptions when two mixins implement the same interface or a mixin implements the same interface as its target class/object
- Applied Krzysztof Kozmic's patch improving the XML documentation of IInterceptorSelector
and IProxyGenerationHook.
2.1.0 RC1 (2009-03-10)
======================
- Applied Krzysztof Kozmic's patch improving the XML documentation and parameter names of IProxyBuilder, DefaultProxyBuilder and ProxyGenerator.
- Applied Krzysztof Kozmic's patch heavily improving the XML documentation of ProxyGenerator.
- Fixed DYNPROXY-ISSUE-84: "UseSingleInterfaceProxy on ProxyGenerationOptions is never used and should be removed"
- Fixed DYNPROXY-ISSUE-58/DYNPROXY-ISSUE-77: "Inherited interface seems not to work"
using Dimitri Goethals' test case and Ayende Rahien/Andrey Shchekin's patch.
- Fixed DYNPROXY-ISSUE-52: "DynamicProxy 1.1.5 doesn't work on Medium Trust"
uses the assembly's fullname instead of calling GetName()
- Fixed DYNPROXY-ISSUE-82: "Not allow generics & NoGeneric methods with same signature"
using Fabio Maulo's test case and Krzysztof Kozmic patch.
- Applied Neil Bourgeois's patch fixing DYNPROXY-ISSUE-78
"Custom attributes of virtual properties absent on proxy"
- Applied Craig Vermeer's patch fixing an issue with generating default constructors for DYNPROXY-ISSUE-81
"No Default Constructor in generated Class Proxy"
- Added support for IInterceptorSelector (patch provided by Krzysztof Kozmic).
- Removed ProxyGenerationOptions.UseSelector.
- Added support for generic methods when specifying additional interfaces to CreateInterfaceProxyWithoutTarget (reported by Craig Neuwirth, cause
found by Krzysztof Kozmic)
- Added support for provide additional interfaces for target interface proxies.
- Added workarounds for dictionary deserialization scenarios (reported by Grégory Célet)
- Fixed mixin-related bug with serialization (per Rogelio again)
- Made interface proxies without target and with target interface support mixins
- Fixed ProxyGenerationOptions equality issues with ordering and different instances of the same mixin types (thanks for finding
the bug, Rogelio)
- Readded mixin support (via Rogelio J. Baucells)
- ClassEmitter now supports emitting fields with specific attributes
- Added a load API to ModuleScope
- SaveAssembly now serializes the cache keys together with the generated types
- Fixed test issue - PEVerify is now called with a quoted assembly path (to allow for spaces in the path)
- Fixed test annoyance - PEVerify is now not called in a separate window
- Changed PersistentProxyBuilder behavior - SaveAssembly is not called by the class generators any more, instead PersistentProxyBuilder.SaveAssemblies
must be used. This allows the proxy builder to save multiple proxies at the same time. Test cases have been adapted.
- Fixed issues with CacheKey.Equals and ProxyGenerationOptions.Equals/GetHashCode
- Added a way to set and retrieve the ModuleScope used by ProxyObjectReference for proxy deserialization; proxies can now be deserialized with
the same ModuleScope used by the application (DYNPROXY-71)
- Made BasePEVerifyTestCase only check those assemblies that were actually generated in the test case, see DYNPROXY-68
- Fixed bug with protected internal constructors, see DYNPROXY-66/DYNPROXY-67
- Fixed test cases not using the ProxyGenerator supplied by BasePEVerifyTestCase, see DYNPROXY-69
- Added StrongNameUtil, which provides methods for checking whether an assembly is signed/a type comes from a signed assembly
- Added an additional constructor overload to ClassEmitter, allowing to force it to use an unsigned assembly
- Fixed a bug in ModuleScope: SaveAssembly tried to delete from the current directory if a file with a matching name existed, not from the target
directory
- Applied Pawel Pabich's suggestion fixing DYNPROXY-65
"OpCodeUtil.GetUnderlyingTypeOfEnum doesn't handle unsigned integers"
- Fixed bug in ArgumentReference occurring when emitting static methods
- Removed ClsCompliant(false) from all the public types in DynamicProxy
- Added constructors to ClassEmitter, removed "serializable" ctor parameter, it wasn't used
- Fixed bug in ModuleScope, see DYNPROXY-64
- Fixed bug in LoadArrayElementExpression, see DYNPROXY-57
- Changed signing behavior for generated assembly, assembly is now only signed if all involved types (base type, interfaces) are also signed
- Documented ModuleScope, added friendlier API for saving assemblies, added tests for ModuleScope, see DYNPROXY-55
- Applied Adam Tybor's patch fixing DYNPROXY-63
"ProxyType not included in CacheKey"
- Reimplemented serialization of ProxyGenerationOptions, see revision 3803, DYNPROXY-59
- Added method signature filtering to MethodFinder (see MethodSignatureComparer) because there were
still cases triggering duplicate methods
- Reimplemented serialization without default constructors, see revision 3725, DYNPROXY-53
- Reimplemented serialization with delegates/events, see revision 3751, DYNPROXY-56
- Renamed InterfaceProxyGeneratorWithoutTarget to InterfaceProxyWithoutTargetGenerator
- Fixed DYNPROXY-62
"Some tests in MethodFinderTestCase failed because of culture specific exception messages"
- Implemented cache for System.Type.GetMethods() in order to avoid triggering the duplicate methods bug
- Applied Adam Tybor's patch fixing DYNPROXY-61
"Need GetInterceptors from IProxyTargetAccessor back for NHibernate Trunk"
- Disabled replication of internal constructors on class proxies.
- Moved the UseSingleInterfaceProxy from Core.ComponentModel to ProxyGeneratorOptions.
- Applied Lee Henson's patch fixing generic parameter definitions
- Applied Jacob Lewallen's patch that introduces ProxyInterfaceWithTargetInterface
Quoting
"I've introduced a new "mode" that is
ProxyInterfaceWithTargetInterface, that uses the given interface as
the target type, rather than the type of the target (it asserts the
target implements the interface) All other modes should remain the
same.
"In this scenario, the IInvocation will also implement
IChangeProxyTarget, which can then be used to change the proxy target
to another implementation of the target interface."
- Added support for events
- Fixed DYNPROXY-43
"DP2 : Missing ParameterInfo 'Name' for Proxied methods"
- Fixed DYNPROXY-41
"Invalid state exception on DP2"
- Fixed DYNPROXY-39
"Deadlock in DynamicProxy2"
- Fixed DYNPROXY-28
"Virtual methods calls from constructors are not working"
- Fixed DYNPROXY-27
"Support for non-parameterless constructors"
- Fixed DYNPROXY-25
"Chars returns are not properly configured"
- Fixed DYNPROXY-24
"DynamicProxy2: missing locks"
- Fixed DYNPROXY-34
"Cant proxy generic interfaces"
Alpha Version 1.0.0.0
=====================
- First release