浏览代码

[corlib] Member|TypeInfo from reference sources

Marek Safar 10 年之前
父节点
当前提交
c32bc77dba

+ 1 - 1
mcs/class/corlib/System.Reflection.Emit/ConstructorBuilder.cs

@@ -333,7 +333,7 @@ namespace System.Reflection.Emit {
 
 		public override Module Module {
 			get {
-				return base.Module;
+				return GetModule ();
 			}
 		}
 

+ 6 - 0
mcs/class/corlib/System.Reflection.Emit/ConstructorOnTypeBuilderInst.cs

@@ -74,6 +74,12 @@ namespace System.Reflection.Emit
 			}
 		}
 
+		public override Module Module {
+			get {
+				return cb.Module;
+			}
+		}
+
 		public override bool IsDefined (Type attributeType, bool inherit)
 		{
 			return cb.IsDefined (attributeType, inherit);

+ 8 - 0
mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs

@@ -211,6 +211,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 ();

+ 1 - 1
mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs

@@ -655,7 +655,7 @@ namespace System.Reflection.Emit
 
 		public override Module Module {
 			get {
-				return base.Module;
+				return GetModule ();
 			}
 		}
 

+ 6 - 0
mcs/class/corlib/System.Reflection.Emit/MethodOnTypeBuilderInst.cs

@@ -128,6 +128,12 @@ namespace System.Reflection.Emit
 			}
 		}
 
+		public override Module Module {
+			get {
+				return base_method.Module;
+			}
+		}
+
 		public override bool IsDefined (Type attributeType, bool inherit)
 		{
 			throw new NotSupportedException ();

+ 0 - 149
mcs/class/corlib/System.Reflection/MemberInfo.cs

@@ -1,149 +0,0 @@
-//
-// System.Reflection.MemberInfo.cs
-//
-// Author:
-//   Miguel de Icaza ([email protected])
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using System.Collections.Generic;
-
-namespace System.Reflection {
-
-	[ComVisible (true)]
-	[ComDefaultInterfaceAttribute (typeof (_MemberInfo))]
-	[Serializable]
-	[ClassInterface(ClassInterfaceType.None)]
-	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-#if MOBILE
-	public abstract class MemberInfo : ICustomAttributeProvider {
-#else
-	public abstract class MemberInfo : ICustomAttributeProvider, _MemberInfo {
-#endif
-
-		protected MemberInfo ()
-		{
-		}
-		
-		public abstract Type DeclaringType {
-			get;
-		}
-
-		public abstract MemberTypes MemberType {
-			get;
-		}
-
-		public abstract string Name {
-			get;
-		}
-
-		public abstract Type ReflectedType {
-			get;
-		}
-
-		public virtual Module Module {
-			get {
-				return DeclaringType.Module;
-			}
-		}
-
-		public abstract bool IsDefined (Type attributeType, bool inherit);
-
-		public abstract object [] GetCustomAttributes (bool inherit);
-
-		public abstract object [] GetCustomAttributes (Type attributeType, bool inherit);
-
-		public virtual extern int MetadataToken {
-			[MethodImplAttribute (MethodImplOptions.InternalCall)]
-			get;
-		}
-
-		public override bool Equals (object obj)
-		{
-			return obj == (object) this;
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-
-		public static bool operator == (MemberInfo left, MemberInfo right)
-		{
-			if ((object)left == (object)right)
-				return true;
-			if ((object)left == null ^ (object)right == null)
-				return false;
-			return left.Equals (right);
-		}
-
-		public static bool operator != (MemberInfo left, MemberInfo right)
-		{
-			if ((object)left == (object)right)
-				return false;
-			if ((object)left == null ^ (object)right == null)
-				return true;
-			return !left.Equals (right);
-		}
-
-		public virtual IList<CustomAttributeData> GetCustomAttributesData () {
-			throw new NotImplementedException ();
-		}
-
-		public virtual IEnumerable<CustomAttributeData> CustomAttributes {
-			get { return GetCustomAttributesData (); }
-		}
-
-#if !MOBILE
-		void _MemberInfo.GetIDsOfNames ([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
-		{
-			throw new NotImplementedException ();
-		}
-
-		Type _MemberInfo.GetType ()
-		{
-			// Required or object::GetType becomes virtual final
-			return base.GetType ();
-		}
-
-		void _MemberInfo.GetTypeInfo (uint iTInfo, uint lcid, IntPtr ppTInfo)
-		{
-			throw new NotImplementedException ();
-		}
-
-		void _MemberInfo.GetTypeInfoCount (out uint pcTInfo)
-		{
-			throw new NotImplementedException ();
-		}
-
-		void _MemberInfo.Invoke (uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)
-		{
-			throw new NotImplementedException ();
-		}
-#endif
-	}
-}

+ 11 - 0
mcs/class/corlib/System.Reflection/MonoMethod.cs

@@ -513,6 +513,17 @@ namespace System.Reflection {
 
 	abstract class RuntimeConstructorInfo : ConstructorInfo, ISerializable
 	{
+		public override Module Module {
+			get {
+				return GetRuntimeModule ();
+			}
+		}
+
+		internal RuntimeModule GetRuntimeModule ()
+		{
+			return RuntimeTypeHandle.GetModule((RuntimeType)DeclaringType);
+		}
+
 		internal BindingFlags BindingFlags {
 			get {
 				return 0;

+ 0 - 141
mcs/class/corlib/System.Reflection/TypeInfo.cs

@@ -1,141 +0,0 @@
-//
-// TypeInfo.cs
-//
-// Authors:
-//    Marek Safar  <[email protected]>
-//    Martin Baulig <[email protected]>
-//
-// Copyright (c) 2011-2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System.Collections.Generic;
-
-namespace System.Reflection
-{
-	public abstract class TypeInfo : Type, IReflectableType
-	{
-		internal TypeInfo ()
-		{
-		}
-		
-		TypeInfo IReflectableType.GetTypeInfo ()
-		{
-			return this;
-		}
-
-		const BindingFlags declaredFlags = BindingFlags.DeclaredOnly |
-			BindingFlags.Public | BindingFlags.NonPublic |
-				BindingFlags.Static | BindingFlags.Instance;
-		
-		public virtual IEnumerable<ConstructorInfo> DeclaredConstructors {
-			get { return GetConstructors (declaredFlags); }
-		}
-		
-		public virtual IEnumerable<EventInfo> DeclaredEvents {
-			get { return GetEvents (declaredFlags); }
-		}
-		
-		public virtual IEnumerable<FieldInfo> DeclaredFields {
-			get { return GetFields (declaredFlags); }
-		}
-		
-		public virtual IEnumerable<MethodInfo> DeclaredMethods {
-			get { return GetMethods (declaredFlags); }
-		}
-		
-		public virtual IEnumerable<PropertyInfo> DeclaredProperties {
-			get { return GetProperties (declaredFlags); }
-		}
-		
-		public virtual IEnumerable<MemberInfo> DeclaredMembers {
-			get {
-				return GetMembers (declaredFlags);
-			}
-		}
-		
-		public virtual IEnumerable<TypeInfo> DeclaredNestedTypes {
-			get {
-				foreach (var nested in GetNestedTypes (declaredFlags))
-					yield return new TypeDelegator (nested);
-			}
-		}
-		
-		public virtual Type[] GenericTypeParameters {
-			get {
-				if (!ContainsGenericParameters)
-					return EmptyTypes;
-
-				return GetGenericArguments ();
-			}
-		}
-
-		public virtual IEnumerable<Type> ImplementedInterfaces {
-			get {
-				return GetInterfaces ();
-			}
-		}
-
-		public virtual Type AsType ()
-		{
-			return this;
-		}
-
-		public virtual EventInfo GetDeclaredEvent (string name)
-		{
-			return GetEvent (name, declaredFlags);
-		}
-
-		public virtual FieldInfo GetDeclaredField (string name)
-		{
-			return GetField (name, declaredFlags);
-		}
-
-		public virtual MethodInfo GetDeclaredMethod (string name)
-		{
-			return GetMethod (name, declaredFlags);
-		}
-
-		public virtual IEnumerable<MethodInfo> GetDeclaredMethods (string name)
-		{
-			foreach (var method in GetMethods (declaredFlags))
-				if (method.Name.Equals (name))
-					yield return method;
-		}
-
-		public virtual TypeInfo GetDeclaredNestedType (string name)
-		{
-			var nested = GetNestedType (name, declaredFlags);
-			if (nested != null)
-				return new TypeDelegator (nested);
-			else
-				return null;
-		}
-
-		public virtual PropertyInfo GetDeclaredProperty (string name)
-		{
-			return GetProperty (name, declaredFlags);
-		}
-
-		public virtual bool IsAssignableFrom (TypeInfo typeInfo)
-		{
-			return IsAssignableFrom (typeInfo.AsType ());
-		}
-	}
-}

+ 2 - 2
mcs/class/corlib/corlib.dll.sources

@@ -379,7 +379,6 @@ System.Reflection/ExceptionHandlingClauseOptions.cs
 System.Reflection/FieldInfo.cs
 System.Reflection/ImageFileMachine.cs
 System.Reflection/LocalVariableInfo.cs
-System.Reflection/MemberInfo.cs
 System.Reflection/MethodBase.cs
 System.Reflection/MethodBody.cs
 System.Reflection/MethodInfo.cs
@@ -402,7 +401,6 @@ System.Reflection/StrongNameKeyPair.cs
 System.Reflection/TargetException.cs
 System.Reflection/TargetInvocationException.cs
 System.Reflection/TargetParameterCountException.cs
-System.Reflection/TypeInfo.cs
 System.Reflection.Emit/AssemblyBuilder.cs
 System.Reflection.Emit/AssemblyBuilderAccess.cs
 System.Reflection.Emit/ConstructorBuilder.cs
@@ -1461,6 +1459,7 @@ ReferenceSources/MonoRuntimeWorkItem.cs
 ../../../external/referencesource/mscorlib/system/reflection/ireflectabletype.cs
 ../../../external/referencesource/mscorlib/system/reflection/manifestresourceinfo.cs
 ../../../external/referencesource/mscorlib/system/reflection/memberfilter.cs
+../../../external/referencesource/mscorlib/system/reflection/memberinfo.cs
 ../../../external/referencesource/mscorlib/system/reflection/memberinfoserializationholder.cs
 ../../../external/referencesource/mscorlib/system/reflection/membertypes.cs
 ../../../external/referencesource/mscorlib/system/reflection/methodattributes.cs
@@ -1478,6 +1477,7 @@ ReferenceSources/MonoRuntimeWorkItem.cs
 ../../../external/referencesource/mscorlib/system/reflection/typeattributes.cs
 ../../../external/referencesource/mscorlib/system/reflection/typedelegator.cs
 ../../../external/referencesource/mscorlib/system/reflection/typefilter.cs
+../../../external/referencesource/mscorlib/system/reflection/typeinfo.cs
 
 ../../../external/referencesource/mscorlib/system/runtime/versioning/binarycompatibility.cs
 ../../../external/referencesource/mscorlib/system/runtime/versioning/targetframeworkid.cs