[ https://issues.apache.org/jira/browse/THRIFT-1786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16748290#comment-16748290 ]
Jens Geyer commented on THRIFT-1786: ------------------------------------ Not to mention the (breaking?) change on the class hierarchy > C# Union Typing > --------------- > > Key: THRIFT-1786 > URL: https://issues.apache.org/jira/browse/THRIFT-1786 > Project: Thrift > Issue Type: New Feature > Components: C# - Compiler > Reporter: Carl Yeksigian > Assignee: Carl Yeksigian > Priority: Major > Fix For: 0.9.1 > > Attachments: 1786-make-fix.patch, 1786-v2.patch, 1786.patch > > > Given the thrift IDL: > {code} > struct A { > 0: i32 value > } > union AUnion { > 0: A field1, > 1: A field2, > 2: i32 value > } > {code} > We should generate a C# subclassing tree: > {code} > class A : TBase { > int Value { get;set; } > } > abstract class AUnion : TBase { > abstract object Data { get; } > protected int field; > abstract void WriteUnionField(TProtocol tprot); > class field1 : AUnion { > A _data; > override object Data { get { return _data; } } > public field1(A data) { > this._data = data; > this.field = 0; > } > } > class field2 : AUnion { > A _data; > override object Data { get { return _data; } } > public field2(A data) { > this._data = data; > this.field = 1; > } > } > class value : AUnion { > int _data; > override object Data { get { return _data; } } > public value(int data) { > this._data = data; > this.field = 2; > } > } > } > {code} > This gives us creation syntax of: > {code} > var aunion = new AUnion.value(10); > {code} > This should be an optional parameter to the compiler since it is a breaking > change to existing code. -- This message was sent by Atlassian JIRA (v7.6.3#76005)