// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. /*============================================================ ** ** Interface: IReadOnlyCollection ** ** ** ** Purpose: Base interface for read-only generic lists. ** ===========================================================*/ using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; namespace System.Collections.Generic { // Provides a read-only, covariant view of a generic list. // Note that T[] : IReadOnlyList, and we want to ensure that if you use // IList, we ensure a YourValueType[] can be used // without jitting. Hence the TypeDependencyAttribute on SZArrayHelper. // This is a special workaround internally though - see VM\compile.cpp. // The same attribute is on IList, IEnumerable, ICollection, and IReadOnlyList. [TypeDependencyAttribute("System.SZArrayHelper")] // If we ever implement more interfaces on IReadOnlyCollection, we should also update RuntimeTypeCache.PopulateInterfaces() in rttype.cs public interface IReadOnlyCollection : IEnumerable { int Count { get; } } }