private TypeReference ReplaceElementType(TypeSpecification ts, TypeReference newElementType) { var arrayType = ts as ArrayType; if (arrayType != null) { if (newElementType == arrayType.ElementType) { return(arrayType); } var newArrayType = new ArrayType(newElementType, arrayType.Rank); for (int dimension = 0; dimension < arrayType.Rank; dimension++) { newArrayType.Dimensions[dimension] = arrayType.Dimensions[dimension]; } return(newArrayType); } var byReferenceType = ts as ByReferenceType; if (byReferenceType != null) { return(new ByReferenceType(newElementType)); } // TODO: should we throw an exception instead calling Resolve method? return(ts.ResolveOrThrow()); }
private TypeReference ReplaceElementType(TypeSpecification ts, TypeReference newElementType) { var arrayType = ts as ArrayType; if (arrayType != null) { if (newElementType == arrayType.ElementType) { return(arrayType); } else { return(new ArrayType(newElementType, arrayType.Dimensions)); } } var byReferenceType = ts as ByReferenceType; if (byReferenceType != null) { return(new ByReferenceType(newElementType)); } // TODO: should we throw an exception instead calling Resolve method? return(ts.ResolveOrThrow()); }