/*
- Copyright (C) 2011 Jeroen Frijters
+ Copyright (C) 2011-2012 Jeroen Frijters
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
sealed class MissingAssembly : Assembly
{
private readonly MissingModule module;
- private readonly string name;
internal MissingAssembly(Universe universe, string name)
: base(universe)
{
module = new MissingModule(this);
- this.name = name;
+ this.fullName = name;
}
public override Type[] GetTypes()
throw new MissingAssemblyException(this);
}
- public override string FullName
- {
- get { return name; }
- }
-
public override AssemblyName GetName()
{
- return new AssemblyName(name);
+ return new AssemblyName(fullName);
}
public override string ImageRuntimeVersion
return null;
}
+ internal override Type FindTypeIgnoreCase(TypeName lowerCaseName)
+ {
+ return null;
+ }
+
internal override IList<CustomAttributeData> GetCustomAttributesData(Type attributeType)
{
throw new MissingAssemblyException(this);
return null;
}
+ internal override Type FindTypeIgnoreCase(TypeName lowerCaseName)
+ {
+ return null;
+ }
+
internal override void GetTypesImpl(System.Collections.Generic.List<Type> list)
{
throw new MissingModuleException(this);
return null;
}
+ internal override Type FindNestedTypeIgnoreCase(TypeName lowerCaseName)
+ {
+ return null;
+ }
+
public override bool __IsMissing
{
get { return true; }
get { return module; }
}
+ public override int MetadataToken
+ {
+ get { return token; }
+ }
+
public override bool IsValueType
{
get
case TypeFlags.NotValueType:
return false;
default:
- throw new MissingMemberException(this);
+ if (module.universe.ResolveMissingTypeIsValueType(this))
+ {
+ typeFlags |= TypeFlags.ValueType;
+ }
+ else
+ {
+ typeFlags |= TypeFlags.NotValueType;
+ }
+ return (typeFlags & TypeFlags.ValueType) != 0;
}
}
}
return this;
}
- internal int GetMetadataTokenForMissing()
- {
- return token;
- }
-
internal override Type SetMetadataTokenForMissing(int token)
{
this.token = token;
{
get { return owner as Type; }
}
+
+ internal override Type BindTypeParameters(IGenericBinder binder)
+ {
+ if (owner is MethodBase)
+ {
+ return binder.BindMethodParameter(this);
+ }
+ else
+ {
+ return binder.BindTypeParameter(this);
+ }
+ }
}
sealed class MissingMethod : MethodInfo
return Forwarder.GetMethodBody();
}
+ public override int __MethodRVA
+ {
+ get { return Forwarder.__MethodRVA; }
+ }
+
public override CallingConventions CallingConvention
{
get { return signature.CallingConvention; }
get { throw new MissingMemberException(this); }
}
+ internal override bool IsNonPrivate
+ {
+ get { throw new MissingMemberException(this); }
+ }
+
internal override bool IsStatic
{
get { throw new MissingMemberException(this); }