2010-04-01 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 1 Apr 2010 22:57:44 +0000 (22:57 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 1 Apr 2010 22:57:44 +0000 (22:57 -0000)
* ModuleBuilder.cs: Implement Resolve*.

svn path=/trunk/mcs/; revision=154676

mcs/class/corlib/System.Reflection.Emit/ChangeLog
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs

index c2cee326e407d8da96aacc9984b4482d70ea31c4..2d2c825c3bf64eaab2979c5cc5c1d1c97363d871 100644 (file)
@@ -1,3 +1,7 @@
+2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * ModuleBuilder.cs: Implement Resolve*.
+
 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * ModuleBuilder.cs: Implement ModuleVersionId.
index d97a7ed5304a1861688766f8dcfdaa28e513fc4e..94602c3c55e7b50fa6274089e43e3b9b095b969c 100644 (file)
@@ -850,6 +850,57 @@ namespace System.Reflection.Emit {
                        return global_type_created.GetMethod (name, bindingAttr, binder, callConvention, types, modifiers);
                }
 
+               public override FieldInfo ResolveField (int metadataToken, Type [] genericTypeArguments, Type [] genericMethodArguments) {
+                       ResolveTokenError error;
+
+                       IntPtr handle = ResolveFieldToken (_impl, metadataToken, ptrs_from_types (genericTypeArguments), ptrs_from_types (genericMethodArguments), out error);
+                       if (handle == IntPtr.Zero)
+                               throw resolve_token_exception (metadataToken, error, "Field");
+                       else
+                               return FieldInfo.GetFieldFromHandle (new RuntimeFieldHandle (handle));
+               }
+
+               public override MemberInfo ResolveMember (int metadataToken, Type [] genericTypeArguments, Type [] genericMethodArguments) {
+
+                       ResolveTokenError error;
+
+                       MemberInfo m = ResolveMemberToken (_impl, metadataToken, ptrs_from_types (genericTypeArguments), ptrs_from_types (genericMethodArguments), out error);
+                       if (m == null)
+                               throw resolve_token_exception (metadataToken, error, "MemberInfo");
+                       else
+                               return m;
+               }
+
+               public override MethodBase ResolveMethod (int metadataToken, Type [] genericTypeArguments, Type [] genericMethodArguments) {
+                       ResolveTokenError error;
+
+                       IntPtr handle = ResolveMethodToken (_impl, metadataToken, ptrs_from_types (genericTypeArguments), ptrs_from_types (genericMethodArguments), out error);
+                       if (handle == IntPtr.Zero)
+                               throw resolve_token_exception (metadataToken, error, "MethodBase");
+                       else
+                               return MethodBase.GetMethodFromHandleNoGenericCheck (new RuntimeMethodHandle (handle));
+               }
+
+               public override string ResolveString (int metadataToken) {
+                       ResolveTokenError error;
+
+                       string s = ResolveStringToken (_impl, metadataToken, out error);
+                       if (s == null)
+                               throw resolve_token_exception (metadataToken, error, "string");
+                       else
+                               return s;
+               }
+
+               public override byte[] ResolveSignature (int metadataToken) {
+                       ResolveTokenError error;
+
+                   byte[] res = ResolveSignature (_impl, metadataToken, out error);
+                       if (res == null)
+                               throw resolve_token_exception (metadataToken, error, "signature");
+                       else
+                               return res;
+               }
+
                public override Type ResolveType (int metadataToken, Type [] genericTypeArguments, Type [] genericMethodArguments) {
                        ResolveTokenError error;
 
@@ -859,6 +910,7 @@ namespace System.Reflection.Emit {
                        else
                                return Type.GetTypeFromHandle (new RuntimeTypeHandle (handle));
                }
+
 #endif
        }