static TypeReference CreateSpecs(TypeReference type, Type type_info) { type = TryCreateGenericInstanceType(type, type_info); var specs = type_info.specs; if (specs.IsNullOrEmpty()) { return(type); } for (int i = 0; i < specs.Length; i++) { switch (specs [i]) { case Type.Ptr: type = new PointerType(type); break; case Type.ByRef: type = new ByReferenceType(type); break; case Type.SzArray: type = new ArrayType(type); break; default: var array = new ArrayType(type); array.Dimensions.Clear(); for (int j = 0; j < specs [i]; j++) { array.Dimensions.Add(new ArrayDimension()); } type = array; break; } } return(type); }
private static ByReferenceType ResolveIfNeeded(IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, ByReferenceType byReferenceType) { return(new ByReferenceType(ResolveIfNeeded(genericInstanceMethod, genericInstanceType, byReferenceType.ElementType))); }