No announcement yet.

[CLOSED] [#3438] IReadOnlyList<T> - Missing variance operator out

  • Filter
  • Time
  • Show
Clear All
new posts

    [CLOSED] [#3438] IReadOnlyList<T> - Missing variance operator out

    IEnumerable correctly has the <out T> type. The IReadOnlyList needs to have this.
    This incorrect variance is preventing us from compiling the Bridge.NET side of our list related library.

    If I may ask, are these files not generated from the C# source in an automated way? I'd be very curious to know the root cause for how this got in (especially if surrounding pieces are generated).

    - selinc
    Last edited by fabricio.murta; 2018-02-28 @ 11:22 PM. Reason: Bind github issue number to the thread.

    Hi selinc,

    Thanks for pointing out this issue. We are investigating today.

    This just looks like some old code that might not have been updated since the early days of the project.


      Hello @selinc!

      Can you share a sample code/deck of how your library references those broken interfaces, just to be sure? The fix seems easy, and I believe to reproduce the issue it would be like a matter of a:

      public class Foo<out T> : IReadOnlyList<T>
      But maybe I'm wrong and having you, who is reproducing the issue, to clarify exactly what scenario we are dealing with, would be best. And we could leave some unit tests that will prevent this issue from ever happening again.


        Not quite Fabricio,

        The variance operators are only valid on interfaces and delegate types.
        Here is an example that sums up the usage using deck.

        Are these specific files not generated from Microsoft .NET source? I was under the impression that they were.

        Thanks for the quick response.


          Are these specific files not generated from Microsoft .NET source? I was under the impression that they were.
          Many are not at this point, but as the project progresses, much more of the original source is being used directly. The full source of Bridge is available on GitHub for your review.


            Hello again!

            Dotnet fiddle does not like your deck either... did I miss the point here?
   (nor did Bridge like it after adding the variance 'out' parameter).

            EDIT: Ops, my bad, it works if I just add using System.Collections.Generic.
            Last edited by fabricio.murta; 2018-03-01 @ 12:22 AM.


              Hello! We've just fixed the issue and merged the change upstream! This will make it to the next Bridge version (currently it would be v16.8.2). Thank you very much for reporting the issue!


                Just for the record, we've logged this thread under issue #3438 and you can already check out your own deck running if you open the dev version: deck @ development environment.


                  How can I get notified when this makes it into a build?
                  I see there is a milestone--but I don't see a notification link under that page
                  Last edited by selinc; 2018-03-02 @ 12:36 AM. Reason: clarification


                    NuGet will let you know when there are packages to update, and Visual Studio will also show when an update for an extension (.vsix) is available.

                    This fix will be released in 16.8.2, which I've scheduled for 2018-03-05.