[ https://issues.apache.org/jira/browse/THRIFT-1786?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carl Yeksigian updated THRIFT-1786: ----------------------------------- Attachment: 1786-make-fix.patch > 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 > Fix For: 1.0 > > Attachments: 1786-make-fix.patch, 1786.patch, 1786-v2.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 is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira