X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Reflection.Emit%2FGenericTypeParameterBuilder.cs;h=9bbe8d0d92b32f73ee8976d3aa23780a54250672;hb=3109b7cfebf7e4ec635fff7da9c09055f3ea6ee7;hp=696ec9cef3a69e9f45eb30dd3d46704398152997;hpb=01ea58cbd474d4a9230acbba5571738896539d42;p=mono.git diff --git a/mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs b/mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs index 696ec9cef3a..9bbe8d0d92b 100644 --- a/mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs +++ b/mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs @@ -42,7 +42,8 @@ namespace System.Reflection.Emit { [ComVisible (true)] [StructLayout (LayoutKind.Sequential)] - public sealed class GenericTypeParameterBuilder : Type + public sealed class GenericTypeParameterBuilder : + TypeInfo { #region Sync with reflection.h private TypeBuilder tbuilder; @@ -81,17 +82,21 @@ namespace System.Reflection.Emit this.mbuilder = mbuilder; this.name = name; this.index = index; - - initialize (); } internal override Type InternalResolve () { - return tbuilder.InternalResolve ().GetGenericArguments () [index]; + if (mbuilder != null) + return MethodBase.GetMethodFromHandle (mbuilder.MethodHandleInternal, mbuilder.TypeBuilder.InternalResolve ().TypeHandle).GetGenericArguments () [index]; + return tbuilder.InternalResolve ().GetGenericArguments () [index]; } - [MethodImplAttribute(MethodImplOptions.InternalCall)] - private extern void initialize (); + internal override Type RuntimeResolve () + { + if (mbuilder != null) + return MethodBase.GetMethodFromHandle (mbuilder.MethodHandleInternal, mbuilder.TypeBuilder.RuntimeResolve ().TypeHandle).GetGenericArguments () [index]; + return tbuilder.RuntimeResolve ().GetGenericArguments () [index]; + } [ComVisible (true)] public override bool IsSubclassOf (Type c) @@ -101,11 +106,7 @@ namespace System.Reflection.Emit protected override TypeAttributes GetAttributeFlagsImpl () { -#if NET_4_0 return TypeAttributes.Public; -#else - throw not_supported (); -#endif } protected override ConstructorInfo GetConstructorImpl (BindingFlags bindingAttr, @@ -214,6 +215,14 @@ namespace System.Reflection.Emit throw not_supported (); } + public override bool IsAssignableFrom (TypeInfo typeInfo) + { + if (typeInfo == null) + return false; + + return IsAssignableFrom (typeInfo.AsType ()); + } + public override bool IsInstanceOfType (object o) { throw not_supported (); @@ -439,10 +448,9 @@ namespace System.Reflection.Emit return new ByRefType (this); } - [MonoTODO] - public override Type MakeGenericType (params Type [] typeArguments) + public override Type MakeGenericType (params Type[] typeArguments) { - return base.MakeGenericType (typeArguments); + throw new InvalidOperationException (Environment.GetResourceString ("Arg_NotGenericTypeDefinition")); } public override Type MakePointerType ()