User: xtoff
Date: 2009/12/29 09:45 AM
Modified:
/DynamicProxy/trunk/src/Castle.DynamicProxy/
DefaultProxyBuilder.cs
/DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/
BaseProxyGenerator.cs, ClassProxyGenerator.cs,
InterfaceProxyWithTargetGenerator.cs,
InterfaceProxyWithTargetInterfaceGenerator.cs,
InterfaceProxyWithoutTargetGenerator.cs, InvocationTypeGenerator.cs,
MethodFinder.cs, MethodGenerator.cs, MethodSignatureComparer.cs,
MethodWithInvocationGenerator.cs
Log:
- removed some ugly code.
File Changes:
Directory: /DynamicProxy/trunk/src/Castle.DynamicProxy/
=======================================================
File [modified]: DefaultProxyBuilder.cs
Delta lines: +2 -2
===================================================================
--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/BaseProxyGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/BaseProxyGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -303,7 +303,7 @@
if (!mapping.ContainsKey(@interface))
{
- SafeAddMapping(@interface, implementer,
mapping);
+ AddMappingNoCheck(@interface, implementer,
mapping);
}
}
@@ -313,7 +313,7 @@
/// <param name="implementer"></param>
/// <param name="interface"></param>
/// <param name="mapping"></param>
- protected virtual void SafeAddMapping(Type @interface,
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
+ protected void AddMappingNoCheck(Type @interface,
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
{
mapping.Add(@interface, implementer);
Directory: /DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/
==================================================================
File [modified]: BaseProxyGenerator.cs
Delta lines: +4 -4
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/ClassProxyGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/ClassProxyGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -178,7 +178,7 @@
// OK, so the target implements
this interface. We now do one of two things:
if
(additionalInterfaces.Contains(mixinInterface) &&
typeImplementerMapping.ContainsKey(mixinInterface) == false)
{
-
SafeAddMapping(mixinInterface, proxyTarget, typeImplementerMapping);
+
AddMappingNoCheck(mixinInterface, proxyTarget, typeImplementerMapping);
proxyTarget.AddInterfaceToProxy(mixinInterface);
}
// we do not intercept the
interface
@@ -189,7 +189,7 @@
if
(!typeImplementerMapping.ContainsKey(mixinInterface))
{
mixins.AddInterfaceToProxy(mixinInterface);
-
SafeAddMapping(mixinInterface, mixins, typeImplementerMapping);
+
AddMappingNoCheck(mixinInterface, mixins, typeImplementerMapping);
}
}
}
@@ -205,7 +205,7 @@
if
(typeImplementerMapping.ContainsKey(@interface)) continue;
// we intercept the interface, and
forward calls to the target type
- SafeAddMapping(@interface, proxyTarget,
typeImplementerMapping);
+ AddMappingNoCheck(@interface,
proxyTarget, typeImplementerMapping);
proxyTarget.AddInterfaceToProxy(@interface);
}
else if
(ProxyGenerationOptions.MixinData.ContainsMixin(@interface) == false)
@@ -223,7 +223,7 @@
#endif
try
{
- SafeAddMapping(typeof(IProxyTargetAccessor),
proxyInstance, typeImplementerMapping);
+ AddMappingNoCheck(typeof(IProxyTargetAccessor),
proxyInstance, typeImplementerMapping);
}
catch (ArgumentException )
File [modified]: ClassProxyGenerator.cs
Delta lines: +14 -16
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -17,6 +17,7 @@
using System;
using System.Collections.Generic;
#if !SILVERLIGHT
+ using System.Diagnostics;
using System.Reflection;
using System.Xml.Serialization;
#endif
@@ -269,7 +270,7 @@
if(ProxyGenerationOptions.MixinData.ContainsMixin(@interface)) continue;
additionalInterfacesContributor.AddInterfaceToProxy(@interface);
- SafeAddMapping(@interface,
additionalInterfacesContributor, typeImplementerMapping);
+ AddMappingNoCheck(@interface,
additionalInterfacesContributor, typeImplementerMapping);
}
// 4. plus special interfaces
@@ -277,7 +278,7 @@
AddMappingForISerializable(typeImplementerMapping,
instance);
try
{
- SafeAddMapping(typeof(IProxyTargetAccessor),
instance, typeImplementerMapping);
+ AddMappingNoCheck(typeof(IProxyTargetAccessor),
instance, typeImplementerMapping);
}
catch (ArgumentException)
{
@@ -296,19 +297,9 @@
protected virtual InterfaceProxyWithoutTargetContributor
GetContributorForAdditionalInterfaces(INamingScope namingScope)
{
- return new
InterfaceProxyWithoutTargetContributor(namingScope, (c, m) =>
NullExpression.Instance) { Logger = Logger }; ;
+ return new
InterfaceProxyWithoutTargetContributor(namingScope, (c, m) =>
NullExpression.Instance) { Logger = Logger };
}
- protected override void SafeAddMapping(Type @interface,
ITypeContributor implementer, IDictionary<Type, ITypeContributor> mapping)
- {
- base.SafeAddMapping(@interface, implementer, mapping);
- if(implementer is InterfaceProxyTargetContributor)
- {
- // TODO: REMOVE IT!
- (implementer as
InterfaceProxyTargetContributor).AddInterfaceToProxy(@interface);
- }
- }
-
protected virtual ITypeContributor
AddMappingForTargetType(IDictionary<Type, ITypeContributor>
typeImplementerMapping, Type proxyTargetType, ICollection<Type>
targetInterfaces, ICollection<Type> additionalInterfaces,INamingScope
namingScope)
{
var contributor = new
InterfaceProxyTargetContributor(proxyTargetType, AllowChangeTarget, namingScope)
@@ -316,13 +307,20 @@
var proxiedInterfaces =
TypeUtil.GetAllInterfaces(targetType);
foreach (var @interface in proxiedInterfaces)
{
- SafeAddMapping(@interface, contributor,
typeImplementerMapping);
+ contributor.AddInterfaceToProxy(@interface);
+ AddMappingNoCheck(@interface, contributor,
typeImplementerMapping);
}
foreach (var @interface in additionalInterfaces)
{
- if (!ImplementedByTarget(targetInterfaces,
@interface)) continue;
- AddMapping(@interface, contributor,
typeImplementerMapping);
+ if (!ImplementedByTarget(targetInterfaces,
@interface) || proxiedInterfaces.Contains(@interface))
+ {
+ continue;
+ }
+
+
Debug.Assert(!typeImplementerMapping.ContainsKey(@interface),
"!typeImplementerMapping.ContainsKey(@interface)");
+ contributor.AddInterfaceToProxy(@interface);
+ AddMappingNoCheck(@interface, contributor,
typeImplementerMapping);
}
return contributor;
File [modified]: InterfaceProxyWithTargetGenerator.cs
Delta lines: +18 -12
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetInterfaceGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithTargetInterfaceGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -16,23 +16,31 @@
{
using System;
using System.Collections.Generic;
+ using System.Reflection;
+ using Castle.DynamicProxy.Contributors;
+ using Castle.DynamicProxy.Generators.Emitters;
using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
using Castle.DynamicProxy.Serialization;
- using Contributors;
- using Emitters;
-
public class InterfaceProxyWithTargetInterfaceGenerator :
InterfaceProxyWithTargetGenerator
{
+
+ public InterfaceProxyWithTargetInterfaceGenerator(ModuleScope
scope, Type @interface)
+ : base(scope, @interface)
+ {
+ }
+
protected override ITypeContributor
AddMappingForTargetType(IDictionary<Type, ITypeContributor>
typeImplementerMapping, Type proxyTargetType, ICollection<Type>
targetInterfaces, ICollection<Type> additionalInterfaces, INamingScope
namingScope)
{
- var contributor = new
InterfaceProxyWithTargetInterfaceTargetContributor(proxyTargetType,
-
AllowChangeTarget,
-
namingScope) { Logger = Logger };
+ var contributor = new
InterfaceProxyWithTargetInterfaceTargetContributor(
+ proxyTargetType,
+ AllowChangeTarget,
+ namingScope) { Logger = Logger };
foreach (var @interface in
TypeUtil.GetAllInterfaces(targetType))
{
- SafeAddMapping(@interface, contributor,
typeImplementerMapping);
+ contributor.AddInterfaceToProxy(@interface);
+ AddMappingNoCheck(@interface, contributor,
typeImplementerMapping);
}
return contributor;
@@ -40,14 +48,12 @@
protected override InterfaceProxyWithoutTargetContributor
GetContributorForAdditionalInterfaces(INamingScope namingScope)
{
- return new InterfaceProxyWithoutTargetContributor(
- namingScope,
- (@class, method) => new
AsTypeReference(@class.GetField("__target"),
method.DeclaringType).ToExpression())
- { Logger = Logger };
+ return new
InterfaceProxyWithoutTargetContributor(namingScope, GetTarget) { Logger =
Logger };
}
- public InterfaceProxyWithTargetInterfaceGenerator(ModuleScope
scope, Type theInterface) : base(scope, theInterface)
+ private Expression GetTarget(ClassEmitter @class, MethodInfo
method)
{
+ return new AsTypeReference(@class.GetField("__target"),
method.DeclaringType).ToExpression();
}
File [modified]: InterfaceProxyWithTargetInterfaceGenerator.cs
Delta lines: +1 -1
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithoutTargetGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InterfaceProxyWithoutTargetGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -35,7 +35,7 @@
foreach (var @interface in
TypeUtil.GetAllInterfaces(targetType))
{
contributor.AddInterfaceToProxy(@interface);
- SafeAddMapping(@interface, contributor,
interfaceTypeImplementerMapping);
+ AddMappingNoCheck(@interface, contributor,
interfaceTypeImplementerMapping);
}
return contributor;
File [modified]: InterfaceProxyWithoutTargetGenerator.cs
Delta lines: +1 -1
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InvocationTypeGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/InvocationTypeGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -93,7 +93,7 @@
MethodInfo
methodInfo)
{
var suggestedName =
string.Format("Castle.Proxies.Invocations.{0}_{1}",
methodInfo.DeclaringType.Name,
-
methodInfo.Name);
+ methodInfo.Name);
var uniqueName =
namingScope.ParentScope.GetUniqueName(suggestedName);
return new ClassEmitter(@class.ModuleScope, uniqueName,
GetBaseType(), interfaces);
File [modified]: InvocationTypeGenerator.cs
Delta lines: +6 -6
===================================================================
--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodFinder.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodFinder.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -24,8 +24,8 @@
/// </summary>
public class MethodFinder
{
- private static Dictionary<Type, object>
_cachedMethodInfosByType = new Dictionary<Type, object>();
- private static object _lockObject = new object();
+ private static readonly Dictionary<Type, object>
cachedMethodInfosByType = new Dictionary<Type, object>();
+ private static readonly object lockObject = new object();
public static MethodInfo[] GetAllInstanceMethods(Type type,
BindingFlags flags)
{
@@ -34,18 +34,18 @@
MethodInfo[] methodsInCache;
- lock (_lockObject)
+ lock (lockObject)
{
- if (!_cachedMethodInfosByType.ContainsKey(type))
+ if (!cachedMethodInfosByType.ContainsKey(type))
{
// We always load all instance methods
into the cache, we will filter them later
- _cachedMethodInfosByType.Add(
+ cachedMethodInfosByType.Add(
type,
RemoveDuplicates(type.GetMethods(
BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Instance)));
}
- methodsInCache =
(MethodInfo[])_cachedMethodInfosByType[type];
+ methodsInCache =
(MethodInfo[])cachedMethodInfosByType[type];
}
return MakeFilteredCopy(methodsInCache, flags &
(BindingFlags.Public | BindingFlags.NonPublic));
File [modified]: MethodFinder.cs
Delta lines: +1 -7
===================================================================
--- DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++ DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -17,9 +17,8 @@
using System.Reflection;
using Castle.DynamicProxy.Contributors;
+ using Castle.DynamicProxy.Generators.Emitters;
- using Emitters;
-
public abstract class MethodGenerator : IGenerator<MethodEmitter>
{
protected MethodInfo MethodToOverride
@@ -27,11 +26,6 @@
get { return method.Method; }
}
- protected MethodInfo MethodOnTarget
- {
- get { return method.MethodOnTarget; }
- }
-
protected MethodGenerator(MethodToGenerate method,
CreateMethodDelegate createMethod, GetMethodAttributesAndNameDelegate
getAttributesAndName)
{
File [modified]: MethodGenerator.cs
Delta lines: +7 -8
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodSignatureComparer.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodSignatureComparer.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -28,17 +28,16 @@
{
return true;
}
- else if (x == null || y == null)
+
+ if (x == null || y == null)
{
return false;
}
- else
- {
- return x.Name == y.Name &&
- EqualGenericParameters(x, y) &&
- EqualSignatureTypes(x.ReturnType,
y.ReturnType) &&
- EqualParameters(x, y);
- }
+
+ return x.Name == y.Name &&
+ EqualGenericParameters(x, y) &&
+ EqualSignatureTypes(x.ReturnType, y.ReturnType)
&&
+ EqualParameters(x, y);
}
File [modified]: MethodSignatureComparer.cs
Delta lines: +4 -5
===================================================================
---
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodWithInvocationGenerator.cs
2009-12-29 15:30:10 UTC (rev 6539)
+++
DynamicProxy/trunk/src/Castle.DynamicProxy/Generators/MethodWithInvocationGenerator.cs
2009-12-29 16:45:14 UTC (rev 6540)
@@ -129,7 +129,7 @@
};
}
- public FieldReference BuildMethodInterceptorsField(ClassEmitter
@class, MethodInfo method, INamingScope namingScope)
+ protected FieldReference
BuildMethodInterceptorsField(ClassEmitter @class, MethodInfo method,
INamingScope namingScope)
{
var methodInterceptors = @class.CreateField(
namingScope.GetUniqueName(string.Format("interceptors_{0}", method.Name)),
@@ -141,12 +141,11 @@
return methodInterceptors;
}
- private void EmitLoadGenricMethodArguments(MethodEmitter
methodEmitter, MethodInfo method,
- LocalReference
invocationImplLocal)
+ private void EmitLoadGenricMethodArguments(MethodEmitter
methodEmitter, MethodInfo method, Reference invocationLocal)
{
#if SILVERLIGHT
Type[] genericParameters =
-
Castle.Core.Extensions.SilverlightExtensions.FindAll(method.GetGenericArguments(),
delegate(Type t) { return t.IsGenericParameter; });
+
Castle.Core.Extensions.SilverlightExtensions.FindAll(method.GetGenericArguments(),
t => t.IsGenericParameter);
#else
Type[] genericParameters =
Array.FindAll(method.GetGenericArguments(), t => t.IsGenericParameter);
#endif
@@ -160,7 +159,7 @@
new
AssignArrayStatement(genericParamsArrayLocal, i, new
TypeTokenExpression(genericParameters[i])));
}
methodEmitter.CodeBuilder.AddStatement(new
ExpressionStatement(
- new
MethodInvocationExpression(invocationImplLocal,
+ new
MethodInvocationExpression(invocationLocal,
InvocationMethods.SetGenericMethodArguments,
new ReferenceExpression(
File [modified]: MethodWithInvocationGenerator.cs
Delta lines: +0 -0
===================================================================
--
You received this message because you are subscribed to the Google Groups
"Castle Project Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-commits?hl=en.