diff --git a/src/embed_tests/TestConverter.cs b/src/embed_tests/TestConverter.cs index 88809e7f7..889f27f17 100644 --- a/src/embed_tests/TestConverter.cs +++ b/src/embed_tests/TestConverter.cs @@ -78,6 +78,21 @@ public void ReadOnlyCollection() Assert.AreEqual(typeof(int), ((IReadOnlyCollection) result).ToList()[1]); } + [Test] + public void ReadOnlyList() + { + var array = new List { typeof(decimal), typeof(int) }; + var py = array.ToPython(); + object result; + var converted = Converter.ToManaged(py, typeof(IReadOnlyList), out result, false); + + Assert.IsTrue(converted); + Assert.AreEqual(typeof(List), result.GetType()); + Assert.AreEqual(2, ((IReadOnlyList)result).Count); + Assert.AreEqual(typeof(decimal), ((IReadOnlyList)result).ToList()[0]); + Assert.AreEqual(typeof(int), ((IReadOnlyList)result).ToList()[1]); + } + [Test] public void ConvertPyListToArray() { diff --git a/src/runtime/Converter.cs b/src/runtime/Converter.cs index 047f7a03a..19fb1c883 100644 --- a/src/runtime/Converter.cs +++ b/src/runtime/Converter.cs @@ -421,7 +421,8 @@ internal static bool ToManagedValue(BorrowedReference value, Type obType, if (typeDefinition == typeof(List<>) || typeDefinition == typeof(IList<>) || typeDefinition == typeof(IEnumerable<>) - || typeDefinition == typeof(IReadOnlyCollection<>)) + || typeDefinition == typeof(IReadOnlyCollection<>) + || typeDefinition == typeof(IReadOnlyList<>)) { return ToList(value, obType, out result, setError); }