From eb4139219e12336acefe85dd8acd786c07b587c1 Mon Sep 17 00:00:00 2001 From: bbaia Date: Fri, 28 May 2010 18:44:18 +0000 Subject: [PATCH] Add 'side by side' support in Framework .NET 4.0 [SPRNET-1320] (Fixed Spring.Web) --- ...SupportsWebDependencyInjectionOwnerProxy.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Spring/Spring.Web/Web/Support/SupportsWebDependencyInjectionOwnerProxy.cs b/src/Spring/Spring.Web/Web/Support/SupportsWebDependencyInjectionOwnerProxy.cs index 083b436a..b1d9b891 100644 --- a/src/Spring/Spring.Web/Web/Support/SupportsWebDependencyInjectionOwnerProxy.cs +++ b/src/Spring/Spring.Web/Web/Support/SupportsWebDependencyInjectionOwnerProxy.cs @@ -94,15 +94,22 @@ namespace Spring.Web.Support { #if NET_2_0 private static readonly SafeField refOccasionalFields; + private static readonly SafeField refControls; static NamingContainerSupportsWebDependencyInjectionOwnerProxy() { - SafeField fld = null; + SafeField fld1 = null; + SafeField fld2 = null; SecurityCritical.ExecutePrivileged( new PermissionSet(PermissionState.Unrestricted), delegate { - fld = new SafeField(typeof(Control).GetField("_occasionalFields", BindingFlags.Instance | BindingFlags.NonPublic)); + fld1 = new SafeField(typeof(Control).GetField("_occasionalFields", BindingFlags.Instance | BindingFlags.NonPublic)); + if (SystemUtils.Clr4Runtime) + { + fld2 = new SafeField(typeof(Control).GetField("_controls", BindingFlags.Instance | BindingFlags.NonPublic)); + } }); - refOccasionalFields = fld; + refOccasionalFields = fld1; + refControls = fld2; } #endif @@ -111,6 +118,11 @@ namespace Spring.Web.Support #if NET_2_0 object targetOccasionalFields = refOccasionalFields.GetValue(targetControl); refOccasionalFields.SetValue(this, targetOccasionalFields); + if (SystemUtils.Clr4Runtime) + { + object targetControls = refControls.GetValue(targetControl); + refControls.SetValue(this, targetControls); + } #endif } }