1. OMG Mailing List
  2. IDL4 to C# Language Mapping 1.0 FTF mailing list

Open Issues

  • Issues not resolved
  • Name: idl4-csharp-ftf
  • Issues Count: 3

Issues Descriptions

A sequence member in an IDL struct should map to a read-only property

  • Key: IDL4CSP-1
  • Status: open  
  • Source: Real-Time Innovations ( Fernando Garcia-Aranda)
  • Summary:

    The spec indicates that all members of a class or struct are mapped to read-write properties, as shown in 7.2.4.3.1:

    public int a_long { get; set; }
    public short a_short { get; set; }
    public int[] a_long_array { get; set; }
    

    However sequence members (IList) should map to read-only properties.

    public IList<int> a_long_sequence { get; }
    

    Rationale: C# best practices recommend this change: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019

    For example, a vendor may decide to use an implementation of IList that allows accessing the memory directly (via unsafe code or Span) to optimize its serialization. If end users are allowed to completely replace the list, they may inadvertently provide a different IList| implementation that the vendor code can't serialize optimally or can't handle at all.

    The same could apply to Maps.

  • Reported: IDL4-CSHARP 1.0a1 — Sun, 22 Mar 2020 20:10 GMT
  • Updated: Tue, 23 Jun 2020 18:57 GMT

All generated classes and structs should implement IEquatable

  • Key: IDL4CSP-2
  • Status: open  
  • Source: Real-Time Innovations ( Fernando Garcia-Aranda)
  • Summary:

    All constructed data types should implement IEquatable:

    The example in section 7.2.4.3.1 would now look as follows:

    public class MyStruct : IEquatable<MyStruct> {
        public MyStruct() {...}
        public MyStruct(int a_long, short a_short, int[] a_long_array) {...} 
        public int a_long { get; set; }
        public short a_short { get; set; }
        public int[] a_long_array { get; set; }
    
        public bool Equals(MyStruct other)
            => a_long == other.a_long 
                 && a_short == other.a_short 
                 && a_long_array.Equals(other.a_long_array)
    }
    
  • Reported: IDL4-CSHARP 1.0a1 — Sun, 22 Mar 2020 20:13 GMT
  • Updated: Tue, 23 Jun 2020 18:21 GMT

The specification shouldn't preclude vendors from adding additional methods to a class or struct

  • Key: IDL4CSP-3
  • Status: open  
  • Source: Real-Time Innovations ( Fernando Garcia-Aranda)
  • Summary:

    The generated code for classes and structs should be allowed to override common functions such as GetHashCode and ToString.

    It should also be allowed to implement additional interfaces in addition to IEquatable (see IDL4CSP-1).

    It should also be allowed to add additional methods, such as Clone or copy constructors.

  • Reported: IDL4-CSHARP 1.0a1 — Sun, 22 Mar 2020 20:14 GMT
  • Updated: Tue, 24 Mar 2020 19:01 GMT