// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
-using System.Reflection;
using System.Runtime.Serialization;
using System.Security.Cryptography.X509Certificates;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
+using System.Security;
using System.Security.Permissions;
namespace System.Reflection {
Other
};
+#if NET_2_0
+ [ComVisible (true)]
+ [ComDefaultInterfaceAttribute (typeof (_Module))]
+#endif
[Serializable]
- public class Module : ISerializable, ICustomAttributeProvider {
+ [ClassInterfaceAttribute (ClassInterfaceType.None)]
+ public class Module : ISerializable, ICustomAttributeProvider, _Module {
public static readonly TypeFilter FilterTypeName;
public static readonly TypeFilter FilterTypeNameIgnoreCase;
}
public virtual string FullyQualifiedName {
- get { return fqname; }
+ get {
+ if (SecurityManager.SecurityEnabled) {
+ new FileIOPermission (FileIOPermissionAccess.PathDiscovery, fqname).Demand ();
+ }
+ return fqname;
+ }
}
-
+
+ // Note: we do not ask for PathDiscovery because no path is returned here.
+ // However MS Fx requires it (see FDBK23572 for details).
public string Name {
get { return name; }
}
}
#if NET_2_0
- [CLSCompliant(false)]
public ModuleHandle ModuleHandle {
get {
return new ModuleHandle (_impl);
public extern int MetadataToken {
[MethodImplAttribute (MethodImplOptions.InternalCall)]
get;
- }
+ }
+
+ public extern int MDStreamVersion {
+ [MethodImplAttribute (MethodImplOptions.InternalCall)]
+ get;
+ }
#endif
public virtual Type[] FindTypes(TypeFilter filter, object filterCriteria)
public MethodInfo GetMethod (string name)
{
- return GetMethodImpl (name, defaultBindingFlags, null, CallingConventions.Any, Type.EmptyTypes, null);
+ // Can't call the other overloads since they call Type.GetMethod () which does a null check on the 'types' array
+ if (IsResource ())
+ return null;
+
+ Type globalType = GetGlobalType ();
+ return (globalType != null) ? globalType.GetMethod (name) : null;
}
public MethodInfo GetMethod (string name, Type[] types)
[SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)]
public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
{
+ if (info == null)
+ throw new ArgumentNullException ("info");
+
UnitySerializationHolder.GetModuleData (this, info, context);
}
return null;
}
}
-
+
+#if NET_2_0
+ [ComVisible (true)]
+#endif
public virtual Type GetType(string className)
{
return GetType (className, false, false);
}
-
+
+#if NET_2_0
+ [ComVisible (true)]
+#endif
public virtual Type GetType(string className, bool ignoreCase)
{
return GetType (className, false, ignoreCase);
}
+#if NET_2_0
+ [ComVisible (true)]
+#endif
public virtual Type GetType(string className, bool throwOnError, bool ignoreCase)
{
if (className == null)
return name;
}
-#if NET_2_0 || BOOTSTRAP_NET_2_0
- public
-#else
- internal
-#endif
- Guid Mvid {
+ internal Guid MvId {
get {
return Mono_GetGuid (this);
}
}
+#if NET_2_0
+ public Guid ModuleVersionId {
+ get {
+ return Mono_GetGuid (this);
+ }
+ }
+
+ public void GetPEKind (out PortableExecutableKinds peKind, out ImageFileMachine machine) {
+ ModuleHandle.GetPEKind (out peKind, out machine);
+ }
+#endif
+
+
#if NET_2_0
private Exception resolve_token_exception (int metadataToken, ResolveTokenError error, string tokenType) {
if (error == ResolveTokenError.OutOfRange)
else
return Type.GetTypeFromHandle (new RuntimeTypeHandle (handle));
}
+
+ [MonoTODO]
+ public byte[] ResolveSignature (int metadataToken) {
+ throw new NotImplementedException ();
+ }
#endif
internal static Type MonoDebugger_ResolveType (Module module, int token)
internal static extern MemberInfo ResolveMemberToken (IntPtr module, int token, out ResolveTokenError error);
[MethodImplAttribute (MethodImplOptions.InternalCall)]
- internal static extern void GetPEKind (IntPtr module, out PortableExecutableKind peKind, out ImageFileMachine machine);
+ internal static extern void GetPEKind (IntPtr module, out PortableExecutableKinds peKind, out ImageFileMachine machine);
+
+#if NET_1_1
+ void _Module.GetIDsOfNames ([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
+ {
+ throw new NotImplementedException ();
+ }
+
+ void _Module.GetTypeInfo (uint iTInfo, uint lcid, IntPtr ppTInfo)
+ {
+ throw new NotImplementedException ();
+ }
+
+ void _Module.GetTypeInfoCount (out uint pcTInfo)
+ {
+ throw new NotImplementedException ();
+ }
+
+ void _Module.Invoke (uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams,
+ IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)
+ {
+ throw new NotImplementedException ();
+ }
+#endif
}
}