FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Support `IReadOnlyList<T>` · Issue #393 · ClearFoundry/ClearScript · GitHub

Support IReadOnlyList<T>  #393

Description

ClearScript / V8 should support lists implementing IReadOnlyList<T> but not IList<T>

Use case
I've a internal module, which returns a readonly collection.

public interface IDataObject {
  int ID: string;
  // more properties and functions
}

public interface IQueryResult : IReadOnlyList<IDataObject>
{
    int Length { get; }
}

public sealed class QueryResult : IQueryResult
{
    private readonly IReadOnlyList<IDataObject> _list;

    public int Count => _list.Count;

    [ScriptMember("length")]
    public int Length => Count;

    public IDataObject this[int index] => _list[index];

    public QueryResult() => _list = ImmutableArray<IDataObject>.Empty;

    public QueryResult(IEnumerable<IDataObject> items) => _list = items.ToImmutableArray();

    public IEnumerator<IDataObject> GetEnumerator() => _list.GetEnumerator();

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

This allows me to access list.length but not list[0].
If i convert / destruct to array [...list][0] i get the expected result.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


Back | FazBrowse Home | New Git URL