|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using Internal.Runtime.Augments;
using Internal.TypeSystem;
namespace Internal.Runtime.TypeLoader
{
/// <summary>
/// Gets interface information from the RuntimeTypeHandle for a type with no metadata
/// </summary>
internal class NoMetadataRuntimeInterfacesAlgorithm : RuntimeInterfacesAlgorithm
{
public override DefType[] ComputeRuntimeInterfaces(TypeDesc type)
{
int numInterfaces = RuntimeAugments.GetInterfaceCount(type.RuntimeTypeHandle);
DefType[] interfaces = new DefType[numInterfaces];
for (int i = 0; i < numInterfaces; i++)
{
RuntimeTypeHandle itfHandle = RuntimeAugments.GetInterface(type.RuntimeTypeHandle, i);
TypeDesc itfType = type.Context.ResolveRuntimeTypeHandle(itfHandle);
interfaces[i] = (DefType)itfType;
}
return interfaces;
}
}
}
|