refactor
authorJb Evain <jbevain@gmail.com>
Sat, 19 Apr 2008 15:57:13 +0000 (15:57 -0000)
committerJb Evain <jbevain@gmail.com>
Sat, 19 Apr 2008 15:57:13 +0000 (15:57 -0000)
svn path=/trunk/mcs/; revision=101218

mcs/class/System.Core/System.Linq.Expressions/EmitContext.cs
mcs/class/System.Core/System.Linq.Expressions/Extensions.cs

index 392bb79ee18d1ac51660ab214c67b821bfd9e9c5..84d74224a95ed5abd898e728a7ea5c867169c8bd 100644 (file)
@@ -184,7 +184,7 @@ namespace System.Linq.Expressions {
                        ig.Emit (OpCodes.Ldc_I4, index);
                        ig.Emit (OpCodes.Ldelem, typeof (object));
 
-                       var type = typeof (StrongBox<>).MakeGenericType (global.GetType ());
+                       var type = global.GetType ().MakeStrongBoxType ();
 
                        ig.Emit (OpCodes.Isinst, type);
                        ig.Emit (OpCodes.Ldfld, type.GetField ("Value"));
@@ -223,10 +223,10 @@ namespace System.Linq.Expressions {
                        globals.Add (CreateStrongBox (value));
                }
 
-               static IStrongBox CreateStrongBox (object value)
+               static object CreateStrongBox (object value)
                {
-                       return (IStrongBox) Activator.CreateInstance (
-                               typeof (StrongBox<>).MakeGenericType (value.GetType ()), value);
+                       return Activator.CreateInstance (
+                               value.GetType ().MakeStrongBoxType (), value);
                }
        }
 
index b4769d260e0c700e40576bcb81a231e8e1bbea46..282b6a173e65f8aaf945884e7711a9d561877de8 100644 (file)
@@ -29,6 +29,7 @@
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
+using System.Runtime.CompilerServices;
 
 namespace System.Linq.Expressions {
 
@@ -78,5 +79,10 @@ namespace System.Linq.Expressions {
                                throw new ArgumentException ();
                        }
                }
+
+               public static Type MakeStrongBoxType (this Type self)
+               {
+                       return typeof (StrongBox<>).MakeGenericType (self);
+               }
        }
 }