Introduced base class for virtual Module classes to have common place to implement abstract Module methods that aren't supported.

This commit is contained in:
jfrijters 2011-03-08 06:43:01 +00:00
Родитель 1c8b1c0cd5
Коммит 602e60e74c
5 изменённых файлов: 109 добавлений и 216 удалений

Просмотреть файл

@ -641,7 +641,7 @@ namespace IKVM.Reflection.Emit
}
}
sealed class ManifestModule : Module
sealed class ManifestModule : NonPEModule
{
private readonly AssemblyBuilder assembly;
private readonly Guid guid = Guid.NewGuid();
@ -686,64 +686,14 @@ namespace IKVM.Reflection.Emit
get { return guid; }
}
public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new ArgumentException();
}
public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new ArgumentException();
}
public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new ArgumentException();
}
public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new ArgumentException();
}
public override string ResolveString(int metadataToken)
{
throw new ArgumentException();
}
public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
{
throw new ArgumentException();
}
public override string ScopeName
{
get { return "RefEmit_InMemoryManifestModule"; }
}
public override AssemblyName[] __GetReferencedAssemblies()
protected override Exception NotSupportedException()
{
throw new InvalidOperationException();
}
public override string[] __GetReferencedModules()
{
throw new InvalidOperationException();
}
internal override Type GetModuleType()
{
throw new InvalidOperationException();
}
internal override IKVM.Reflection.Reader.ByteReader GetBlob(int blobIndex)
{
throw new InvalidOperationException();
}
protected override long GetImageBaseImpl()
{
throw new InvalidOperationException();
return new InvalidOperationException();
}
}
}

Просмотреть файл

@ -194,7 +194,7 @@ namespace IKVM.Reflection
}
}
sealed class MissingModule : Module
sealed class MissingModule : NonPEModule
{
private readonly MissingAssembly assembly;
@ -229,36 +229,6 @@ namespace IKVM.Reflection
get { throw new MissingModuleException(this); }
}
public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new MissingModuleException(this);
}
public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new MissingModuleException(this);
}
public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new MissingModuleException(this);
}
public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new MissingModuleException(this);
}
public override string ResolveString(int metadataToken)
{
throw new MissingModuleException(this);
}
public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
{
throw new MissingModuleException(this);
}
public override string ScopeName
{
get { throw new MissingModuleException(this); }
@ -274,26 +244,6 @@ namespace IKVM.Reflection
throw new MissingModuleException(this);
}
public override AssemblyName[] __GetReferencedAssemblies()
{
throw new MissingModuleException(this);
}
public override string[] __GetReferencedModules()
{
throw new MissingModuleException(this);
}
internal override Type GetModuleType()
{
throw new MissingModuleException(this);
}
internal override IKVM.Reflection.Reader.ByteReader GetBlob(int blobIndex)
{
throw new MissingModuleException(this);
}
public override void __GetDataDirectoryEntry(int index, out int rva, out int length)
{
throw new MissingModuleException(this);
@ -339,9 +289,19 @@ namespace IKVM.Reflection
throw new MissingModuleException(this);
}
protected override long GetImageBaseImpl()
protected override Exception InvalidOperationException()
{
throw new MissingModuleException(this);
return new MissingModuleException(this);
}
protected override Exception NotSupportedException()
{
return new MissingModuleException(this);
}
protected override Exception ArgumentOutOfRangeException()
{
return new MissingModuleException(this);
}
}

Просмотреть файл

@ -142,7 +142,7 @@ namespace IKVM.Reflection
internal readonly MethodSpecTable MethodSpec = new MethodSpecTable();
internal readonly GenericParamConstraintTable GenericParamConstraint = new GenericParamConstraintTable();
internal Module(Universe universe)
protected Module(Universe universe)
{
this.universe = universe;
}
@ -487,6 +487,84 @@ namespace IKVM.Reflection
}
}
abstract class NonPEModule : Module
{
protected NonPEModule(Universe universe)
: base(universe)
{
}
protected virtual Exception InvalidOperationException()
{
return new InvalidOperationException();
}
protected virtual Exception NotSupportedException()
{
return new NotSupportedException();
}
protected virtual Exception ArgumentOutOfRangeException()
{
return new ArgumentOutOfRangeException();
}
internal sealed override Type GetModuleType()
{
throw InvalidOperationException();
}
internal sealed override ByteReader GetBlob(int blobIndex)
{
throw InvalidOperationException();
}
public sealed override AssemblyName[] __GetReferencedAssemblies()
{
throw NotSupportedException();
}
public sealed override string[] __GetReferencedModules()
{
throw NotSupportedException();
}
protected sealed override long GetImageBaseImpl()
{
throw NotSupportedException();
}
public sealed override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw ArgumentOutOfRangeException();
}
public sealed override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw ArgumentOutOfRangeException();
}
public sealed override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw ArgumentOutOfRangeException();
}
public sealed override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw ArgumentOutOfRangeException();
}
public sealed override string ResolveString(int metadataToken)
{
throw ArgumentOutOfRangeException();
}
public sealed override Type[] __ResolveOptionalParameterTypes(int metadataToken)
{
throw ArgumentOutOfRangeException();
}
}
public delegate bool TypeFilter(Type m, object filterCriteria);
public delegate bool MemberFilter(MemberInfo m, object filterCriteria);
}

Просмотреть файл

@ -94,13 +94,23 @@ namespace IKVM.Reflection.Reader
private static readonly DummyModule module = new DummyModule();
private readonly int position;
private sealed class DummyModule : Module
private sealed class DummyModule : NonPEModule
{
internal DummyModule()
: base(new Universe())
{
}
protected override Exception NotSupportedException()
{
return new InvalidOperationException();
}
protected override Exception ArgumentOutOfRangeException()
{
return new InvalidOperationException();
}
public override bool Equals(object obj)
{
throw new InvalidOperationException();
@ -151,65 +161,10 @@ namespace IKVM.Reflection.Reader
get { throw new InvalidOperationException(); }
}
public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new InvalidOperationException();
}
public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new InvalidOperationException();
}
public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new InvalidOperationException();
}
public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new InvalidOperationException();
}
public override string ResolveString(int metadataToken)
{
throw new InvalidOperationException();
}
public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
{
throw new InvalidOperationException();
}
public override string ScopeName
{
get { throw new InvalidOperationException(); }
}
public override AssemblyName[] __GetReferencedAssemblies()
{
throw new InvalidOperationException();
}
public override string[] __GetReferencedModules()
{
throw new InvalidOperationException();
}
internal override Type GetModuleType()
{
throw new InvalidOperationException();
}
internal override ByteReader GetBlob(int blobIndex)
{
throw new InvalidOperationException();
}
protected override long GetImageBaseImpl()
{
throw new InvalidOperationException();
}
}
internal static Type Make(int position)

Просмотреть файл

@ -26,7 +26,7 @@ using System.Collections.Generic;
namespace IKVM.Reflection.Reader
{
sealed class ResourceModule : Module
sealed class ResourceModule : NonPEModule
{
private readonly Assembly assembly;
private readonly string scopeName;
@ -75,51 +75,6 @@ namespace IKVM.Reflection.Reader
get { throw new NotSupportedException(); }
}
public override Type ResolveType(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new NotSupportedException();
}
public override MethodBase ResolveMethod(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new NotSupportedException();
}
public override FieldInfo ResolveField(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new NotSupportedException();
}
public override MemberInfo ResolveMember(int metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
{
throw new NotSupportedException();
}
public override string ResolveString(int metadataToken)
{
throw new NotSupportedException();
}
public override Type[] __ResolveOptionalParameterTypes(int metadataToken)
{
throw new NotSupportedException();
}
public override AssemblyName[] __GetReferencedAssemblies()
{
throw new NotSupportedException();
}
public override string[] __GetReferencedModules()
{
throw new NotSupportedException();
}
protected override long GetImageBaseImpl()
{
throw new NotSupportedException();
}
internal override Type FindType(TypeName typeName)
{
return null;
@ -129,14 +84,9 @@ namespace IKVM.Reflection.Reader
{
}
internal override Type GetModuleType()
protected override Exception ArgumentOutOfRangeException()
{
throw new InvalidOperationException();
}
internal override ByteReader GetBlob(int blobIndex)
{
throw new InvalidOperationException();
return new NotSupportedException();
}
}
}