From fed670d6140fee93dd95642e2cd138baecee77cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?=
<12201973+fredericdelaporte@users.noreply.github.com>
Date: Sun, 27 May 2018 16:41:20 +0200
Subject: [PATCH 1/2] Implement a static IFieldInterceptorAccessor
---
src/AsyncGenerator.yml | 2 +
.../Async/DynamicProxyTests/PeVerifier.cs | 46 --
.../DynamicProxyTests/PeVerifyFixture.cs | 133 ------
.../DynamicProxyTests/PeVerifyFixture.cs | 2 +-
.../PeVerifier.cs | 4 +-
.../StaticProxyFactoryFixture.cs | 179 ++++++-
.../Proxy/FieldInterceptorObjectReference.cs | 132 ++++++
.../Proxy/FieldInterceptorProxyBuilder.cs | 438 ++++++++++++++++++
src/NHibernate/Proxy/StaticProxyFactory.cs | 17 +-
9 files changed, 767 insertions(+), 186 deletions(-)
delete mode 100644 src/NHibernate.Test/Async/DynamicProxyTests/PeVerifier.cs
delete mode 100644 src/NHibernate.Test/Async/DynamicProxyTests/PeVerifyFixture.cs
rename src/NHibernate.Test/{DynamicProxyTests => ProxyTest}/PeVerifier.cs (96%)
create mode 100644 src/NHibernate/Proxy/FieldInterceptorObjectReference.cs
create mode 100644 src/NHibernate/Proxy/FieldInterceptorProxyBuilder.cs
diff --git a/src/AsyncGenerator.yml b/src/AsyncGenerator.yml
index 15df51734d0..69aa2886b58 100644
--- a/src/AsyncGenerator.yml
+++ b/src/AsyncGenerator.yml
@@ -196,6 +196,8 @@
name: LinqReadonlyTestsContext
- conversion: Ignore
name: MultiThreadRunner
+ - conversion: Ignore
+ name: PeVerifier
- conversion: Ignore
hasAttributeName: IgnoreAttribute
- conversion: NewType
diff --git a/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifier.cs b/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifier.cs
deleted file mode 100644
index 4ade0606804..00000000000
--- a/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifier.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by AsyncGenerator.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-using System;
-using System.Diagnostics;
-using System.IO;
-using NUnit.Framework;
-
-namespace NHibernate.Test.DynamicProxyTests
-{
- using System.Threading.Tasks;
- public partial class PeVerifier
- {
-
- public async Task AssertIsValidAsync()
- {
- var process = new Process
- {
- StartInfo =
- {
- FileName = _peVerifyPath,
- RedirectStandardOutput = true,
- UseShellExecute = false,
- Arguments = "\"" + _assemlyLocation + "\" /VERBOSE",
- CreateNoWindow = true
- }
- };
-
- process.Start();
- var processOutput = await (process.StandardOutput.ReadToEndAsync());
- process.WaitForExit();
-
- var result = process.ExitCode + " code ";
-
- if (process.ExitCode != 0)
- Assert.Fail("PeVerify reported error(s): " + Environment.NewLine + processOutput, result);
- }
- }
-}
diff --git a/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifyFixture.cs b/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifyFixture.cs
deleted file mode 100644
index eaaead249a5..00000000000
--- a/src/NHibernate.Test/Async/DynamicProxyTests/PeVerifyFixture.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by AsyncGenerator.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-using System;
-using System.IO;
-using System.Reflection;
-using System.Reflection.Emit;
-using NUnit.Framework;
-using NHibernate.Proxy.DynamicProxy;
-
-namespace NHibernate.Test.DynamicProxyTests
-{
- using System.Threading.Tasks;
- [TestFixture]
- public class PeVerifyFixtureAsync
- {
- private static bool wasCalled;
-
- private const string assemblyName = "peVerifyAssembly";
- private const string assemblyFileName = "peVerifyAssembly.dll";
-
- [Test]
- public Task VerifyClassWithPublicConstructorAsync()
- {
- try
- {
- var factory = new ProxyFactory(new SavingProxyAssemblyBuilder(assemblyName));
- var proxyType = factory.CreateProxyType(typeof(ClassWithPublicDefaultConstructor), null);
-
- wasCalled = false;
- Activator.CreateInstance(proxyType);
-
- Assert.That(wasCalled);
- return new PeVerifier(assemblyFileName).AssertIsValidAsync();
- }
- catch (Exception ex)
- {
- return Task.FromException