Carl Yeksigian created THRIFT-1786:
--------------------------------------
Summary: 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
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