File: System\Reflection\TypeLoading\Types\RoModifiedGenericType.cs
Web Access
Project: src\src\libraries\System.Reflection.MetadataLoadContext\src\System.Reflection.MetadataLoadContext.csproj (System.Reflection.MetadataLoadContext)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics;
using System.Reflection.TypeLoading;
 
namespace System.Reflection
{
    /// <summary>
    /// A generic type that is modified and contains modified parameter types.
    /// </summary>
    internal sealed class RoModifiedGenericType : RoModifiedType
    {
        private readonly RoModifiedType[] _argumentTypes;
 
        public RoModifiedGenericType(RoConstructedGenericType genericType) : base(genericType)
        {
            Debug.Assert(genericType.IsGenericType);
 
            Type[] unmodifiedTypes = genericType.GetGenericTypeArgumentsNoCopy();
            int count = unmodifiedTypes.Length;
 
            RoModifiedType[] argumentTypes = new RoModifiedType[count];
            for (int i = 0; i < count; i++)
            {
                RoModifiedType argument = Create((RoType)unmodifiedTypes[i]);
                argumentTypes[i] = argument;
            }
 
            _argumentTypes = argumentTypes;
        }
 
        protected internal sealed override RoType[] GetGenericArgumentsNoCopy() => _argumentTypes;
    }
}