module.cs

来自「没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没」· CS 代码 · 共 352 行

CS
352
字号
/* * Module.cs - Implementation of the "System.Reflection.Module" class. * * Copyright (C) 2001  Southern Storm Software, Pty Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */namespace System.Reflection{#if CONFIG_REFLECTIONusing System;using System.Collections;using System.Globalization;using System.Runtime.CompilerServices;using System.Runtime.Serialization;using System.Security.Cryptography.X509Certificates;public class Module : IClrProgramItem, ICustomAttributeProvider#if CONFIG_SERIALIZATION	, ISerializable#endif{	// Internal state.	internal IntPtr privateData;	// Constructor.	internal Module() {}	// Implement the IClrProgramItem interface.	IntPtr IClrProgramItem.ClrHandle			{				get				{					return privateData;				}			}	// Get a field from the module type.	public FieldInfo GetField(String name)			{				return GetModuleType().GetField(name);			}	public FieldInfo GetField(String name, BindingFlags bindingAttr)			{				return GetModuleType().GetField(name, bindingAttr);			}	// Get all module type fields that match a specific set of criteria.	// Note: the first is required by ECMA, but doesn't exist in the SDK,	// so you should avoid using it if at all possible.	public FieldInfo[] GetFields(BindingFlags bindingAttr)			{				return GetModuleType().GetFields(bindingAttr);			}	public FieldInfo[] GetFields()			{				return GetModuleType().GetFields();			}	// Get a method from the module type.	public MethodInfo GetMethod(String name)			{				return GetMethodImpl(name, BindingFlags.Default,									 null, CallingConventions.Any,									 new Type [0], null);			}	public MethodInfo GetMethod(String name, Type[] types)			{				return GetMethodImpl(name, BindingFlags.Default,									 null, CallingConventions.Any,									 types, null);			}#if !ECMA_COMPAT	public MethodInfo GetMethod(String name,							    BindingFlags bindingAttr, Binder binder,								CallingConventions callingConventions,								Type[] types, ParameterModifier[] modifiers)			{				return GetMethodImpl(name, bindingAttr, binder,									 callingConventions, types, modifiers);			}#endif // !ECMA_COMPAT	// Get a method implementation that matches a specific set of criteria.#if ECMA_COMPAT	internal#endif	protected virtual MethodInfo GetMethodImpl				(String name, BindingFlags bindingAttr, Binder binder,				 CallingConventions callingConventions,				 Type[] types, ParameterModifier[] modifiers)			{				return GetModuleType().GetMethod						(name, bindingAttr, binder,						 callingConventions, types, modifiers);			}	// Get all module type methods that match a specific set of criteria.	// Note: the first is required by ECMA, but doesn't exist in the SDK,	// so you should avoid using it if at all possible.	public MethodInfo[] GetMethods(BindingFlags bindingAttr)			{				return GetModuleType().GetMethods(bindingAttr);			}	public MethodInfo[] GetMethods()			{				return GetModuleType().GetMethods();			}	// Convert the module into a string.	public override String ToString()			{				return Name;			}#if CONFIG_RUNTIME_INFRA	// Get the assembly that contains this module.	public System.Reflection.Assembly Assembly			{				get				{					return GetAssemblyCore();				}			}	// Workaround the fact that the Assembly property is non-virtual.	internal virtual System.Reflection.Assembly GetAssemblyCore()			{				return GetAssembly();			}#endif	// Get the fully-qualified name for this module.	public virtual String FullyQualifiedName			{				get				{					return GetFullName();				}			}	// Get the name of this module.	public String Name			{				get				{					return ClrHelpers.GetName(privateData);				}			}#if !ECMA_COMPAT	// Get the scope name for this module.	public String ScopeName			{				get				{					return ClrHelpers.GetName(privateData);				}			}	// Get custom attributes for this module.	public virtual Object[] GetCustomAttributes(bool inherit)			{				return ClrHelpers.GetCustomAttributes(this, inherit);			}	public virtual Object[] GetCustomAttributes(Type type, bool inherit)			{				return ClrHelpers.GetCustomAttributes(this, type, inherit);			}		// Determine if a custom attribute is defined for this module.	public virtual bool IsDefined(Type type, bool inherit)			{				return ClrHelpers.IsDefined(this, type, inherit);			}	// Get a type from this module.	public virtual Type GetType(String name)			{				return GetType(name, false, false);			}	public virtual Type GetType(String name, bool ignoreCase)			{				return GetType(name, false, ignoreCase);			}	[MethodImpl(MethodImplOptions.InternalCall)]	extern public virtual Type GetType(String name, bool throwOnError,									   bool ignoreCase);	// Return all types that are defined in this module.	[MethodImpl(MethodImplOptions.InternalCall)]	extern public virtual Type[] GetTypes();	// Determine if this module is a resource.	[MethodImpl(MethodImplOptions.InternalCall)]	extern public bool IsResource();#if CONFIG_X509_CERTIFICATES	// Get the signer certificate for this module.	public X509Certificate GetSignerCertificate()			{				// Not used in this implementation.				return null;			}#endif#if CONFIG_SERIALIZATION	// Get the serialization data for this module.	public virtual void GetObjectData(SerializationInfo info,							  		  StreamingContext context)			{				if(info == null)				{					throw new ArgumentNullException("info");				}				UnitySerializationHolder.Serialize					(info, UnitySerializationHolder.UnityType.Module,					 ScopeName, Assembly);			}#endif // CONFIG_SERIALIZATION	// A type filter that searches on name.	private static bool FilterTypeNameImpl(Type type, Object criteria)			{				String name = (criteria as String);				if(name != null)				{					if(name.EndsWith("*"))					{						return type.FullName.StartsWith							(name.Substring(0, name.Length - 1));					}					else					{						return (type.FullName == name);					}				}				return false;			}	// A type filter that searches on name while ignoring case.	private static bool FilterTypeNameIgnoreCaseImpl				(Type type, Object criteria)			{				String name = (criteria as String);				if(name != null)				{					if(name.EndsWith("*"))					{						name = name.Substring(0, name.Length - 1);						String fullName = type.FullName;						if(fullName.Length < name.Length)						{							return false;						}						return (String.Compare(fullName, 0, name, 0,											   name.Length, true) == 0);					}					else					{						return (String.Compare(type.FullName, name, true)									== 0);					}				}				return false;			}	// Declare the standard type filters.	public static readonly TypeFilter FilterTypeName =			new TypeFilter(FilterTypeNameImpl);	public static readonly TypeFilter FilterTypeNameIgnoreCase =			new TypeFilter(FilterTypeNameIgnoreCaseImpl);	// Find all types that match a specified filter criteria.	public virtual Type[] FindTypes(TypeFilter filter,									Object filterCriteria)			{				Type[] types = GetTypes();				if(filter == null || types == null)				{					return types;				}				ArrayList list = new ArrayList();				foreach(Type type in types)				{					if(filter(type, filterCriteria))					{						list.Add(type);					}				}				return (Type[])(list.ToArray(typeof(Type)));			}#else // ECMA_COMPAT	// Get custom attributes for this module.	Object[] ICustomAttributeProvider.GetCustomAttributes(bool inherit)			{				return ClrHelpers.GetCustomAttributes(this, inherit);			}	Object[] ICustomAttributeProvider.GetCustomAttributes					(Type type, bool inherit)			{				return ClrHelpers.GetCustomAttributes(this, type, inherit);			}		// Determine if a custom attribute is defined for this module.	bool ICustomAttributeProvider.IsDefined(Type type, bool inherit)			{				return ClrHelpers.IsDefined(this, type, inherit);			}#endif // ECMA_COMPAT	// Get the module type.	[MethodImpl(MethodImplOptions.InternalCall)]	extern internal virtual Type GetModuleType();	// Get the assembly that contains this module.	[MethodImpl(MethodImplOptions.InternalCall)]	extern private Assembly GetAssembly();	// Get the fully-qualified name for this module.	[MethodImpl(MethodImplOptions.InternalCall)]	extern private String GetFullName();}; // class Module#endif // CONFIG_REFLECTION}; // namespace System.Reflection

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?