public VTable GetVTable(ITypeDefOrRef type) { if (type == null) { return(null); } if (type is TypeDef) { return(GetOrConstruct((TypeDef)type)); } else if (type is TypeRef) { return(GetOrConstruct(((TypeRef)type).ResolveThrow())); } else if (type is TypeSpec) { TypeSig sig = ((TypeSpec)type).TypeSig; if (sig is TypeDefOrRefSig) { TypeDef typeDef = ((TypeDefOrRefSig)sig).TypeDefOrRef.ResolveTypeDefThrow(); return(GetOrConstruct(typeDef)); } else if (sig is GenericInstSig) { var genInst = (GenericInstSig)sig; TypeDef openType = genInst.GenericType.TypeDefOrRef.ResolveTypeDefThrow(); VTable vTable = GetOrConstruct(openType); return(ResolveGenericArgument(openType, genInst, vTable)); } else { throw new NotSupportedException("Unexpected type: " + type.ToString()); } } else { throw new UnreachableException(); } }
public override string ToString() { return(typeRef.ToString()); }
public VTable GetVTable(ITypeDefOrRef type) { if (type == null) return null; if (type is TypeDef) return GetOrConstruct((TypeDef)type); else if (type is TypeRef) return GetOrConstruct(((TypeRef)type).ResolveThrow()); else if (type is TypeSpec) { TypeSig sig = ((TypeSpec)type).TypeSig; if (sig is TypeDefOrRefSig) { TypeDef typeDef = ((TypeDefOrRefSig)sig).TypeDefOrRef.ResolveTypeDefThrow(); return GetOrConstruct(typeDef); } else if (sig is GenericInstSig) { var genInst = (GenericInstSig)sig; TypeDef openType = genInst.GenericType.TypeDefOrRef.ResolveTypeDefThrow(); VTable vTable = GetOrConstruct(openType); return ResolveGenericArgument(openType, genInst, vTable); } else throw new NotSupportedException("Unexpected type: " + type.ToString()); } else throw new UnreachableException(); }
public override string ToString() => typeRef.ToString();