示例#1
0
            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());
            }