My favorites | Sign in
Project Logo
                
Details: Show all Hide all

Last 7 days

  • Dec 18, 2009
    issue 40 (The generated default constructor in the ProxyFactory.Create...) commented on by dirk.bonne   -   Ok fine, a pity though. I wasn't using the library to build a proxy really. I was "injecting" interfaces into a class, implementing the behaviour of those interfaces in terms of that class. I'll solve it another way. best regards, Dirk
    Ok fine, a pity though. I wasn't using the library to build a proxy really. I was "injecting" interfaces into a class, implementing the behaviour of those interfaces in terms of that class. I'll solve it another way. best regards, Dirk
  • Dec 18, 2009
    issue 40 (The generated default constructor in the ProxyFactory.Create...) Status changed by Philip.Laureano   -   Hi dirk, Calling the object constructor is done by design so that the proxy won't have the state (or baggage) of the real object. Each proxy instance is intentionally designed to have no state of its own (aside from the pointer to the interceptor type that will handle all of its calls), and skipping the base class constructor call uniformly allows LinFu.Proxy v2.2 to treat interfaces and abstract base class method calls the same way with the same interceptor, regardless if the base type is an interface or an abstract class--so I'm afraid I can't this one...
    Status: WontFix
    Hi dirk, Calling the object constructor is done by design so that the proxy won't have the state (or baggage) of the real object. Each proxy instance is intentionally designed to have no state of its own (aside from the pointer to the interceptor type that will handle all of its calls), and skipping the base class constructor call uniformly allows LinFu.Proxy v2.2 to treat interfaces and abstract base class method calls the same way with the same interceptor, regardless if the base type is an interface or an abstract class--so I'm afraid I can't this one...
    Status: WontFix
  • Dec 18, 2009
    issue 40 (The generated default constructor in the ProxyFactory.Create...) reported by dirk.bonne   -   In CreateProxyType the call proxyType.AddDefaultConstructor() should probably be proxyType.AddDefaultConstructor(actualBaseType) otherwise code skips the constructor in the passed base class! This error occurs at least in 2.2.0. Following Code demonstrates this: using System; using LinFu.AOP.Interfaces; using LinFu.Proxy; using LinFu.Proxy.Interfaces; using NUnit.Framework; namespace gcache.tests.TestEnvironment { public class A { public bool ConstructorRan; public A() { ConstructorRan = true; } } [TestFixture] public class TestLinfu { [Test] public void Test() { ProxyFactory pf = new ProxyFactory(); A proxy = (A) pf.CreateProxy(typeof(A), (IInterceptor)null, new Type[0]); Assert.IsTrue(proxy.ConstructorRan); } } }
    In CreateProxyType the call proxyType.AddDefaultConstructor() should probably be proxyType.AddDefaultConstructor(actualBaseType) otherwise code skips the constructor in the passed base class! This error occurs at least in 2.2.0. Following Code demonstrates this: using System; using LinFu.AOP.Interfaces; using LinFu.Proxy; using LinFu.Proxy.Interfaces; using NUnit.Framework; namespace gcache.tests.TestEnvironment { public class A { public bool ConstructorRan; public A() { ConstructorRan = true; } } [TestFixture] public class TestLinfu { [Test] public void Test() { ProxyFactory pf = new ProxyFactory(); A proxy = (A) pf.CreateProxy(typeof(A), (IInterceptor)null, new Type[0]); Assert.IsTrue(proxy.ConstructorRan); } } }

Last 30 days

  • Dec 14, 2009
    r452 (Merged the 2.3.1 changes back into the trunk) committed by Philip.Laureano   -   Merged the 2.3.1 changes back into the trunk
    Merged the 2.3.1 changes back into the trunk
  • Dec 12, 2009
    r451 (Added more tests for static method body replacement.) committed by Philip.Laureano   -   Added more tests for static method body replacement.
    Added more tests for static method body replacement.
  • Dec 12, 2009
    r450 (Finished adding support for replacing static method bodies a...) committed by Philip.Laureano   -   Finished adding support for replacing static method bodies at runtime with LinFu.AOP v2.3
    Finished adding support for replacing static method bodies at runtime with LinFu.AOP v2.3
  • Dec 12, 2009
    r449 (Added support for intercepting static method calls using Lin...) committed by Philip.Laureano   -   Added support for intercepting static method calls using LinFu.AOP v2.x
    Added support for intercepting static method calls using LinFu.AOP v2.x
  • Dec 11, 2009
    r448 (Modified LinFu.AOP to call the AroundInvokeRegistry before a...) committed by Philip.Laureano   -   Modified LinFu.AOP to call the AroundInvokeRegistry before and after each method call.
    Modified LinFu.AOP to call the AroundInvokeRegistry before and after each method call.
  • Dec 11, 2009
    r447 (Added more tests for method body interception in LinFu.AOP v...) committed by Philip.Laureano   -   Added more tests for method body interception in LinFu.AOP v2.x
    Added more tests for method body interception in LinFu.AOP v2.x
  • Dec 10, 2009
    r446 (Added a working implementation for method body interception ...) committed by Philip.Laureano   -   Added a working implementation for method body interception in LinFu.AOP v2.0 (NOTE: It's currently HIGHLY experimental code so I don't recommend using it in production just yet)
    Added a working implementation for method body interception in LinFu.AOP v2.0 (NOTE: It's currently HIGHLY experimental code so I don't recommend using it in production just yet)
  • Dec 09, 2009
    r445 (Refactored the MethodBodyInterceptionTests test fixture to m...) committed by Philip.Laureano   -   Refactored the MethodBodyInterceptionTests test fixture to make the code easier to read
    Refactored the MethodBodyInterceptionTests test fixture to make the code easier to read
  • Dec 09, 2009
    r444 (Finished adding the implementation for method body intercept...) committed by Philip.Laureano   -   Finished adding the implementation for method body interception (NOTE: It still needs more tests)
    Finished adding the implementation for method body interception (NOTE: It still needs more tests)
  • Dec 05, 2009
    r443 (Updated the 2.3.1 development branch with the latest changes...) committed by Philip.Laureano   -   Updated the 2.3.1 development branch with the latest changes from the trunk (rev: 442)
    Updated the 2.3.1 development branch with the latest changes from the trunk (rev: 442)
  • Nov 26, 2009
    r442 (Fixed a memory leak that was caused by the Initializer class...) committed by Philip.Laureano   -   Fixed a memory leak that was caused by the Initializer class failing to release the references to the list of objects that it has initialized. Special thanks goes to David Musgrove for the patch!
    Fixed a memory leak that was caused by the Initializer class failing to release the references to the list of objects that it has initialized. Special thanks goes to David Musgrove for the patch!

Earlier this year

  • Nov 16, 2009
    issue 38 (Methods not intercepted when protected internal) Status changed by Philip.Laureano   -   Hi Diego, I took a look at LinFu.DynamicProxy 1.0 code and it turns out that it only proxies public methods by default..
    Status: Accepted
    Hi Diego, I took a look at LinFu.DynamicProxy 1.0 code and it turns out that it only proxies public methods by default..
    Status: Accepted
  • Nov 11, 2009
    issue 39 (Generic Methods with Constraints don't work through proxies....) reported by nigel.thorne   -   public interface IRestrictedGeneric { T DoSomething<T>() where T : Entity; } public class RestrictedGeneric: IRestrictedGeneric { public T DoSomething<T>() where T : Entity { T foo = default(T); foo.ID = 10; return foo; } } public class Entity { public int ID {get;set;} } public class Banana:Entity { } public class Interceptor : IInterceptor { public object Intercept(InvocationInfo info) { return null; } } [Test] public void TSC_WithGenericMethodsWithRestrictionsS() { var proxy = new ProxyFactory().CreateProxy(typeof(IRestrictedGeneric), new Interceptor()); ((IRestrictedGeneric)proxy).DoSomething<Banana>(); } ----- System.Security.VerificationException: Method NDependencyInjection.Tests.ConduitTests+IRestrictedGeneric.DoSomething: type argument 'T0' violates the constraint of type parameter 'T'. at IRestrictedGenericProxy.DoSomething<T0>() at NDependencyInjection.Tests.ConduitTests.TSC_WithGenericMethodsWithRestrictionsS() in ConduitTests.cs: line 192
    public interface IRestrictedGeneric { T DoSomething<T>() where T : Entity; } public class RestrictedGeneric: IRestrictedGeneric { public T DoSomething<T>() where T : Entity { T foo = default(T); foo.ID = 10; return foo; } } public class Entity { public int ID {get;set;} } public class Banana:Entity { } public class Interceptor : IInterceptor { public object Intercept(InvocationInfo info) { return null; } } [Test] public void TSC_WithGenericMethodsWithRestrictionsS() { var proxy = new ProxyFactory().CreateProxy(typeof(IRestrictedGeneric), new Interceptor()); ((IRestrictedGeneric)proxy).DoSomething<Banana>(); } ----- System.Security.VerificationException: Method NDependencyInjection.Tests.ConduitTests+IRestrictedGeneric.DoSomething: type argument 'T0' violates the constraint of type parameter 'T'. at IRestrictedGenericProxy.DoSomething<T0>() at NDependencyInjection.Tests.ConduitTests.TSC_WithGenericMethodsWithRestrictionsS() in ConduitTests.cs: line 192
  • Nov 05, 2009
    issue 38 (Methods not intercepted when protected internal) commented on by jancic   -   Hi!, I was using v1.0.3.14911 because it's the one deployed in NHibernate 2.1GA; however if I download the latest binary published here (v1.0.3.28303) the same happens. Diego
    Hi!, I was using v1.0.3.14911 because it's the one deployed in NHibernate 2.1GA; however if I download the latest binary published here (v1.0.3.28303) the same happens. Diego
  • Nov 04, 2009
    issue 38 (Methods not intercepted when protected internal) commented on by Philip.Laureano   -   Hi Jancic, Which version of LinFu.DynamicProxy are you using? I believe this has been fixed in v1.03...
    Hi Jancic, Which version of LinFu.DynamicProxy are you using? I believe this has been fixed in v1.03...
  • Nov 04, 2009
    issue 38 (Methods not intercepted when protected internal) reported by jancic   -   Hi,, DynamicProxy is neither incercepting nor forwarding calls to "Protected Internal" methods, but it does with public ones. See attached example, the output will be the following: Call to add_Click intercepted -------------------------------------------------------------- Firing event with PROTECTED INTERNAL -------------------------------------------------------------- Call to FireEvent2 intercepted Firing event with PUBLIC Event fired... In the example, when the protected internal method is called, the Click event is null, maybe because it's on the proxy class and not in the real one. I've spend all the day with this problem because NH uses it, is this by design? Thanks!
    Hi,, DynamicProxy is neither incercepting nor forwarding calls to "Protected Internal" methods, but it does with public ones. See attached example, the output will be the following: Call to add_Click intercepted -------------------------------------------------------------- Firing event with PROTECTED INTERNAL -------------------------------------------------------------- Call to FireEvent2 intercepted Firing event with PUBLIC Event fired... In the example, when the protected internal method is called, the Click event is null, maybe because it's on the proxy class and not in the real one. I've spend all the day with this problem because NH uses it, is this by design? Thanks!
  • Oct 21, 2009
    r441 (Added the missing *Filter interfaces to the 1.03 tag) committed by Philip.Laureano   -   Added the missing *Filter interfaces to the 1.03 tag
    Added the missing *Filter interfaces to the 1.03 tag
  • Oct 15, 2009
    r440 (Added the missing source files for LinFu.AOP v1.03) committed by Philip.Laureano   -   Added the missing source files for LinFu.AOP v1.03
    Added the missing source files for LinFu.AOP v1.03
  • Oct 15, 2009
    r439 (Branched v1.03 for maintenance purposes) committed by Philip.Laureano   -   Branched v1.03 for maintenance purposes
    Branched v1.03 for maintenance purposes
  • Oct 14, 2009
    r438 (Patched LinFu.AOP v1.03) committed by Philip.Laureano   -   Patched LinFu.AOP v1.03
    Patched LinFu.AOP v1.03
  • Oct 12, 2009
    r437 (Modified the AspectWeaver in LinFu 1.03 to avoid weaving enu...) committed by Philip.Laureano   -   Modified the AspectWeaver in LinFu 1.03 to avoid weaving enums and other value types.
    Modified the AspectWeaver in LinFu 1.03 to avoid weaving enums and other value types.
  • Oct 04, 2009
    r436 (Created the dev-2.3.1 branch from revision 429; There was an...) committed by Philip.Laureano   -   Created the dev-2.3.1 branch from revision 429; There was an untraceable bug in LinFu.AOP v2's method body replacement that could not be fixed so I'm reverting back to the last known working version (revision 429) and redoing the method body swapper implementation.
    Created the dev-2.3.1 branch from revision 429; There was an untraceable bug in LinFu.AOP v2's method body replacement that could not be fixed so I'm reverting back to the last known working version (revision 429) and redoing the method body swapper implementation.
  • Sep 29, 2009
    r435 (Changes: -Added custom container loader overloads to the co...) committed by Philip.Laureano   -   Changes: -Added custom container loader overloads to the container.LoadFrom extension method -Added the ShouldLoad method to the Loader class which allows users to filter out plugins before they are executed.
    Changes: -Added custom container loader overloads to the container.LoadFrom extension method -Added the ShouldLoad method to the Loader class which allows users to filter out plugins before they are executed.
  • Sep 29, 2009
    r434 ([No log message]) committed by Philip.Laureano   -   [No log message]
    [No log message]
  • Sep 25, 2009
    r433 ([No log message]) committed by Philip.Laureano   -   [No log message]
    [No log message]
  • Sep 24, 2009
    issue 37 (Add static method replacement support for LinFu.AOP) reported by Philip.Laureano   -   Allow users to modify their assemblies without the performance penalties associated with the runtime method weaving in LinFu v2.3
    Allow users to modify their assemblies without the performance penalties associated with the runtime method weaving in LinFu v2.3
  • Sep 20, 2009
    r432 (Changes (Development-2.3 branch): Added ref/out parameter s...) committed by Philip.Laureano   -   Changes (Development-2.3 branch): Added ref/out parameter support to LinFu.AOP v2.0
    Changes (Development-2.3 branch): Added ref/out parameter support to LinFu.AOP v2.0
  • Sep 17, 2009
    issue 36 (DynamicProxy: Problem with generic constraints) commented on by Rauhotz   -   Hi, it looks like the problem only appears when run from an NUnit unit test: [TestFixture] public class LinFuTest { public interface ITestInterface<P> where P : struct { T GetIdentity<T>(T obj) where T : ITestInterface<P>; } public class TestInterfaceImpl<P> : ITestInterface<P> where P : struct { public T GetIdentity<T>(T obj) where T : ITestInterface<P> { return obj; } } public class ProxyFactory { public class InterceptorWrapper : LinFu.DynamicProxy.IInterceptor { private readonly IInterceptor interceptor; public InterceptorWrapper(IInterceptor interceptor) { this.interceptor = interceptor; } public object Intercept(LinFu.DynamicProxy.InvocationInfo info) { return this.interceptor.Intercept( new InvocationInfo(info.Target, info.TargetMethod, info.StackTrace, info.TypeArguments, info.Arguments) ); } } public static ProxyFactory Default = new ProxyFactory(); private readonly LinFu.DynamicProxy.ProxyFactory factory = new LinFu.DynamicProxy.ProxyFactory(); public T CreateProxy<T>(IInterceptor interceptor) { return (T)this.factory.CreateProxy(typeof(object), new InterceptorWrapper(interceptor), typeof(T)); } public object CreateProxy(Type instanceType, IInterceptor interceptor) { return this.factory.CreateProxy<object>(new InterceptorWrapper(interceptor), instanceType); } } public static class LockingProxy { /// <summary> /// Creates a proxy for an object that locks all calls to the /// object by the object itself as semaphore. /// </summary> public static T Create<T>(object target) { var interceptor = new LockingInterceptor(target); return ProxyFactory.Default.CreateProxy<T>(interceptor); } public static T Create<T>(T target) { var interceptor = new LockingInterceptor(target); return ProxyFactory.Default.CreateProxy<T>(interceptor); } } public class LockingInterceptor : IInterceptor { private readonly object target; public LockingInterceptor(object target) { if (target == null) throw new ArgumentNullException("target"); this.target = target; } #region IInterceptor Members public object Intercept(InvocationInfo info) { lock (target) { try { return info.TargetMethod.Invoke(target, info.Arguments); } catch (Exception ex) { throw ex.InnerException ?? ex; } } } #endregion } [Test] public void Test() { var obj = new TestInterfaceImpl<int>(); Assert.AreEqual(obj, obj.GetIdentity(obj)); var proxy = LockingProxy.Create<ITestInterface<int>>(obj); Assert.AreEqual(obj, proxy.GetIdentity(obj)); } }
    Hi, it looks like the problem only appears when run from an NUnit unit test: [TestFixture] public class LinFuTest { public interface ITestInterface<P> where P : struct { T GetIdentity<T>(T obj) where T : ITestInterface<P>; } public class TestInterfaceImpl<P> : ITestInterface<P> where P : struct { public T GetIdentity<T>(T obj) where T : ITestInterface<P> { return obj; } } public class ProxyFactory { public class InterceptorWrapper : LinFu.DynamicProxy.IInterceptor { private readonly IInterceptor interceptor; public InterceptorWrapper(IInterceptor interceptor) { this.interceptor = interceptor; } public object Intercept(LinFu.DynamicProxy.InvocationInfo info) { return this.interceptor.Intercept( new InvocationInfo(info.Target, info.TargetMethod, info.StackTrace, info.TypeArguments, info.Arguments) ); } } public static ProxyFactory Default = new ProxyFactory(); private readonly LinFu.DynamicProxy.ProxyFactory factory = new LinFu.DynamicProxy.ProxyFactory(); public T CreateProxy<T>(IInterceptor interceptor) { return (T)this.factory.CreateProxy(typeof(object), new InterceptorWrapper(interceptor), typeof(T)); } public object CreateProxy(Type instanceType, IInterceptor interceptor) { return this.factory.CreateProxy<object>(new InterceptorWrapper(interceptor), instanceType); } } public static class LockingProxy { /// <summary> /// Creates a proxy for an object that locks all calls to the /// object by the object itself as semaphore. /// </summary> public static T Create<T>(object target) { var interceptor = new LockingInterceptor(target); return ProxyFactory.Default.CreateProxy<T>(interceptor); } public static T Create<T>(T target) { var interceptor = new LockingInterceptor(target); return ProxyFactory.Default.CreateProxy<T>(interceptor); } } public class LockingInterceptor : IInterceptor { private readonly object target; public LockingInterceptor(object target) { if (target == null) throw new ArgumentNullException("target"); this.target = target; } #region IInterceptor Members public object Intercept(InvocationInfo info) { lock (target) { try { return info.TargetMethod.Invoke(target, info.Arguments); } catch (Exception ex) { throw ex.InnerException ?? ex; } } } #endregion } [Test] public void Test() { var obj = new TestInterfaceImpl<int>(); Assert.AreEqual(obj, obj.GetIdentity(obj)); var proxy = LockingProxy.Create<ITestInterface<int>>(obj); Assert.AreEqual(obj, proxy.GetIdentity(obj)); } }
  • Sep 17, 2009
    issue 36 (DynamicProxy: Problem with generic constraints) commented on by Philip.Laureano   -   Hi Rauhotz, LinFu.DP1 doesn't have problems with generic methods. Did you try to proxy the ITestInterface<P> without specifying what P should be?
    Hi Rauhotz, LinFu.DP1 doesn't have problems with generic methods. Did you try to proxy the ITestInterface<P> without specifying what P should be?
  • Sep 17, 2009
    issue 36 (DynamicProxy: Problem with generic constraints) reported by Rauhotz   -   When i try to create a proxy for the following (test) interface: public interface ITestInterface<P> where P : struct { T GetIdentity<T>(T obj) where T : ITestInterface<P>; } I get the following exception: System.Security.VerificationException: Method ITestInterface`1[System.Int32].GetIdentity: type argument 'T' violates the constraint of type parameter 'T'. When i remove the generic constraints, i get the following exception: System.InvalidOperationException: Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true. Does LinFu have problems with generic methods in general?
    When i try to create a proxy for the following (test) interface: public interface ITestInterface<P> where P : struct { T GetIdentity<T>(T obj) where T : ITestInterface<P>; } I get the following exception: System.Security.VerificationException: Method ITestInterface`1[System.Int32].GetIdentity: type argument 'T' violates the constraint of type parameter 'T'. When i remove the generic constraints, i get the following exception: System.InvalidOperationException: Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true. Does LinFu have problems with generic methods in general?
  • Sep 14, 2009
    issue 35 (Nested classes no longer supported in DP2) Status changed by Philip.Laureano   -   I managed to reproduce the bug but it'll take a while for me to do in Mono.Cecil what DP1 does with System.Reflection.Emit. The problem seems to be that the Proxy Factory class needs to generate a proxy type that matches the type attribute flags of the nested base class that it's inheriting. Here are the proxy type attributes being used in DP1: TypeAttributes typeAttributes = TypeAttributes.AutoClass | TypeAttributes.Class | TypeAttributes.Public | TypeAttributes.BeforeFieldInit; Here are the proxy type attributes being used in DP2: var attributes = TypeAttributes.AutoClass | TypeAttributes.Class | TypeAttributes.BeforeFieldInit | TypeAttributes.Public; Strangely enough, the DP1 version (the one that uses System.Reflection.Emit) works fine, while the version that uses Cecil cannot properly create nested proxy types. I'll have to check with Jb Evain and see what he says about it.
    Status: Accepted
    I managed to reproduce the bug but it'll take a while for me to do in Mono.Cecil what DP1 does with System.Reflection.Emit. The problem seems to be that the Proxy Factory class needs to generate a proxy type that matches the type attribute flags of the nested base class that it's inheriting. Here are the proxy type attributes being used in DP1: TypeAttributes typeAttributes = TypeAttributes.AutoClass | TypeAttributes.Class | TypeAttributes.Public | TypeAttributes.BeforeFieldInit; Here are the proxy type attributes being used in DP2: var attributes = TypeAttributes.AutoClass | TypeAttributes.Class | TypeAttributes.BeforeFieldInit | TypeAttributes.Public; Strangely enough, the DP1 version (the one that uses System.Reflection.Emit) works fine, while the version that uses Cecil cannot properly create nested proxy types. I'll have to check with Jb Evain and see what he says about it.
    Status: Accepted
  • Sep 14, 2009
    issue 35 (Nested classes no longer supported in DP2) reported by p...@petegoo.com   -   What steps will reproduce the problem? 1. Create a dynamic proxy of a class which is nested 2. Confirm that works in Linfu.DynamicProxy 3. Confirm that fails in Linfu.Proxy (DP2) What is the expected output? What do you see instead? -A proxied type is generated and an instance is returned What version of the product are you using? On what operating system? -LinFu.Core, Version 2.2.0.19938 Please provide any additional information below. -Exception info is as follows: System.ArgumentException: The proxy factory can only generate proxies from public base classes. Parameter name: baseType. seems to happen in the ProxyFactory.CreateProxyType(Type baseType, IEnumerable<Type> baseInterfaces) method where it checks if the type.IsPublic. Nested types do not show as IsPublic. Could change to !baseType.IsPublic && !baseType.IsNestedPublic
    What steps will reproduce the problem? 1. Create a dynamic proxy of a class which is nested 2. Confirm that works in Linfu.DynamicProxy 3. Confirm that fails in Linfu.Proxy (DP2) What is the expected output? What do you see instead? -A proxied type is generated and an instance is returned What version of the product are you using? On what operating system? -LinFu.Core, Version 2.2.0.19938 Please provide any additional information below. -Exception info is as follows: System.ArgumentException: The proxy factory can only generate proxies from public base classes. Parameter name: baseType. seems to happen in the ProxyFactory.CreateProxyType(Type baseType, IEnumerable<Type> baseInterfaces) method where it checks if the type.IsPublic. Nested types do not show as IsPublic. Could change to !baseType.IsPublic && !baseType.IsNestedPublic
  • Sep 14, 2009
    issue 35 (Nested classes no longer supported in DP2) reported by p...@petegoo.com   -   What steps will reproduce the problem? 1. Create a dynamic proxy of a class which is nested 2. Confirm that works in Linfu.DynamicProxy 3. Confirm that fails in Linfu.Proxy (DP2) What is the expected output? What do you see instead? -A proxied type is generated and an instance is returned What version of the product are you using? On what operating system? -LinFu.Core, Version 2.2.0.19938 Please provide any additional information below. -Exception info is as follows: System.ArgumentException: The proxy factory can only generate proxies from public base classes. Parameter name: baseType. seems to happen in the ProxyFactory.CreateProxyType(Type baseType, IEnumerable<Type> baseInterfaces) method where it checks if the type.IsPublic. Nested types do not show as IsPublic. Could change to !baseType.IsPublic && !baseType.IsNestedPublic
    What steps will reproduce the problem? 1. Create a dynamic proxy of a class which is nested 2. Confirm that works in Linfu.DynamicProxy 3. Confirm that fails in Linfu.Proxy (DP2) What is the expected output? What do you see instead? -A proxied type is generated and an instance is returned What version of the product are you using? On what operating system? -LinFu.Core, Version 2.2.0.19938 Please provide any additional information below. -Exception info is as follows: System.ArgumentException: The proxy factory can only generate proxies from public base classes. Parameter name: baseType. seems to happen in the ProxyFactory.CreateProxyType(Type baseType, IEnumerable<Type> baseInterfaces) method where it checks if the type.IsPublic. Nested types do not show as IsPublic. Could change to !baseType.IsPublic && !baseType.IsNestedPublic
  • Sep 13, 2009
    r431 (Changes (dev-2.3): -Added the missing XML documentation tag...) committed by Philip.Laureano   -   Changes (dev-2.3): -Added the missing XML documentation tags to the following files: BaseMethodRewriter.cs InstructionSwapper.cs InterceptMethodBody.cs MethodBodyInterceptionExtensions.cs
    Changes (dev-2.3): -Added the missing XML documentation tags to the following files: BaseMethodRewriter.cs InstructionSwapper.cs InterceptMethodBody.cs MethodBodyInterceptionExtensions.cs
  • Sep 13, 2009
    r430 (Finished adding method body interception support to LinFu v2...) committed by Philip.Laureano   -   Finished adding method body interception support to LinFu v2.3 in the development branch
    Finished adding method body interception support to LinFu v2.3 in the development branch
  • Sep 11, 2009
    r429 ([No log message]) committed by Philip.Laureano   -   [No log message]
    [No log message]
  • Sep 10, 2009
    r428 (Changes (dev-2.3 branch): Incomplete: Added the epilog/prol...) committed by Philip.Laureano   -   Changes (dev-2.3 branch): Incomplete: Added the epilog/prolog stub code to the InterceptMethodBody class
    Changes (dev-2.3 branch): Incomplete: Added the epilog/prolog stub code to the InterceptMethodBody class
  • Sep 08, 2009
    r427 ([No log message]) committed by Philip.Laureano   -   [No log message]
    [No log message]
  • Sep 08, 2009
    r426 (Fixed a few build errors in the dev-2.3 branch) committed by Philip.Laureano   -   Fixed a few build errors in the dev-2.3 branch
    Fixed a few build errors in the dev-2.3 branch
  • Sep 07, 2009
    r425 (Changes (Dev Branch, v2.3): Added stubs for method body int...) committed by Philip.Laureano   -   Changes (Dev Branch, v2.3): Added stubs for method body interception
    Changes (Dev Branch, v2.3): Added stubs for method body interception
  • Sep 03, 2009
    r424 (Changes (Dev-2.3 branch): -Refactored the AssemblyLoaderWit...) committed by Philip.Laureano   -   Changes (Dev-2.3 branch): -Refactored the AssemblyLoaderWithPdbSupport class out of the JITWeaver class. -LinFu.AOP now loads PDB files into memory after an assembly has been modified (Note: You still have to use the AssemblyLoaderWithPdbSupport class with the JITWeaver class to use it)
    Changes (Dev-2.3 branch): -Refactored the AssemblyLoaderWithPdbSupport class out of the JITWeaver class. -LinFu.AOP now loads PDB files into memory after an assembly has been modified (Note: You still have to use the AssemblyLoaderWithPdbSupport class with the JITWeaver class to use it)
  • Sep 02, 2009
    r423 (Changes (dev-2.3 branch) Added Pdb debugger support to the J...) committed by Philip.Laureano   -   Changes (dev-2.3 branch) Added Pdb debugger support to the JITWeaver class in LinFu.AOP
    Changes (dev-2.3 branch) Added Pdb debugger support to the JITWeaver class in LinFu.AOP
  • Sep 01, 2009
    r422 (Changes (trunk): -Separated LinFu.AOP from LinFu.IOC. You c...) committed by Philip.Laureano   -   Changes (trunk): -Separated LinFu.AOP from LinFu.IOC. You can now build LinFu.AOP separately by typing "go aop" from the command line.
    Changes (trunk): -Separated LinFu.AOP from LinFu.IOC. You can now build LinFu.AOP separately by typing "go aop" from the command line.
  • Sep 01, 2009
    issue 33 (Separate LinFu.Proxy from LinFu) Status changed by Philip.Laureano   -   You can now build LinFu.Proxy using the following batch file command from the command line: go aop The build script will compile LinFu.Proxy into LinFu.AOP.dll, and that newly-compiled assembly will contain LinFu.Proxy without LinFu.IOC.
    Status: Fixed
    You can now build LinFu.Proxy using the following batch file command from the command line: go aop The build script will compile LinFu.Proxy into LinFu.AOP.dll, and that newly-compiled assembly will contain LinFu.Proxy without LinFu.IOC.
    Status: Fixed
  • Sep 01, 2009
    LinFu.AOP-2.2.0.0.zip (LinFu.AOP (includes LinFu.Proxy)) file uploaded by Philip.Laureano   -  
    Labels: Featured Type-Archive OpSys-All
    Labels: Featured Type-Archive OpSys-All
  • Sep 01, 2009
    issue 27 (Implement Method Body Replacement in LinFu.AOP) Summary changed by Philip.Laureano   -  
    Summary: Implement Method Body Replacement in LinFu.AOP
    Summary: Implement Method Body Replacement in LinFu.AOP
  • Sep 01, 2009
    issue 29 (Implement LinFu.DesignByContract v3.0) Labels changed by Philip.Laureano   -  
    Labels: Milestone-Release2.3
    Labels: Milestone-Release2.3
 
Hosted by Google Code