From 23fe284b4888ba12929d7508a2a8651a39683a91 Mon Sep 17 00:00:00 2001 From: halit tiryaki Date: Thu, 26 Oct 2017 17:01:36 +0200 Subject: [PATCH 1/3] interrupt already supported by NeedBypass() method signature. only added an additional check after OnEnter() invoke. --- MethodDecorator.Fody/MethodDecorator.cs | 6 +++++- MethodDecoratorInterfaces/IPartialDecorator.cs | 6 +++--- MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/MethodDecorator.Fody/MethodDecorator.cs b/MethodDecorator.Fody/MethodDecorator.cs index 74680d1e..bf8db195 100644 --- a/MethodDecorator.Fody/MethodDecorator.cs +++ b/MethodDecorator.Fody/MethodDecorator.cs @@ -18,7 +18,6 @@ public MethodDecorator(ModuleDefinition moduleDefinition) { public void Decorate(TypeDefinition type, MethodDefinition method, CustomAttribute attribute, bool explicitMatch) { - method.Body.InitLocals = true; var methodBaseTypeRef = this._referenceFinder.GetTypeReference(typeof(MethodBase)); @@ -182,8 +181,13 @@ public void Decorate(TypeDefinition type, MethodDefinition method, CustomAttribu processor.InsertBefore(methodBodyFirstInstruction, bypassInstructions); if (callOnEntryInstructions != null) + { processor.InsertBefore(methodBodyFirstInstruction, callOnEntryInstructions); + if (bypassInstructions != null) + processor.InsertBefore(methodBodyFirstInstruction, bypassInstructions); + } + if (methodBodyReturnInstructions != null) { processor.InsertAfter(method.Body.Instructions.Last(), methodBodyReturnInstructions); diff --git a/MethodDecoratorInterfaces/IPartialDecorator.cs b/MethodDecoratorInterfaces/IPartialDecorator.cs index 5a410907..1edd7e4d 100644 --- a/MethodDecoratorInterfaces/IPartialDecorator.cs +++ b/MethodDecoratorInterfaces/IPartialDecorator.cs @@ -32,15 +32,15 @@ public interface IPartialDecoratorException { void OnException(Exception iException); } - interface IPartialDecoratorContinuation + public interface IPartialDecoratorContinuation { void OnTaskContinuation(Task task); } - interface IPartialDecoratorNeedBypass + public interface IPartialDecoratorNeedBypass { bool NeedBypass(); } - interface IPartialAlterRetval + public interface IPartialAlterRetval { object AlterRetval(object iRetval); } diff --git a/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj b/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj index d8f03216..48b21f87 100644 --- a/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj +++ b/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj @@ -41,6 +41,7 @@ + From 10cd02260aa5e119b00c8caa91519d9cf91a8fca Mon Sep 17 00:00:00 2001 From: halit tiryaki Date: Thu, 26 Oct 2017 17:27:30 +0200 Subject: [PATCH 2/3] removed IInterruptableMethodDecorator.cs --- MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj b/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj index 48b21f87..d8f03216 100644 --- a/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj +++ b/MethodDecoratorInterfaces/MethodDecoratorInterfaces.csproj @@ -41,7 +41,6 @@ - From 9b34bb7a5a288562ba76610a17fc315705c3179a Mon Sep 17 00:00:00 2001 From: halit tiryaki Date: Thu, 26 Oct 2017 20:50:54 +0200 Subject: [PATCH 3/3] fix (nuget): added an exclude block to the install.ps1 to allow a ref copy being placed in the target project --- install.ps1 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/install.ps1 b/install.ps1 index 6f69ce12..c96e100c 100644 --- a/install.ps1 +++ b/install.ps1 @@ -66,10 +66,13 @@ function Fix-ReferencesCopyLocal($package, $project) { if ($asms -contains $reference.Name + ".dll") { - if($reference.CopyLocal -eq $true) - { - $reference.CopyLocal = $false; - } + if (-not $reference.Name -eq "MethodDecoratorInterfaces.dll") + { + if($reference.CopyLocal -eq $true) + { + $reference.CopyLocal = $false; + } + } } } }