Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.12.0
-
None
-
Patch Available
Description
Following thrift:
```thrift
struct PlayMsg
union RequestMsg
{ 1: PlayMsg Play, }```
Generates:
public abstract partial class RequestMsg : TAbstractBase { public abstract void Write(TProtocol protocol); public readonly bool Isset; public abstract object Data { get; } protected RequestMsg(bool isset) { Isset = isset; } // SNIP public class Play : RequestMsg { private PlayMsg _data; public override object Data { get { return _data; } } public Play(PlayMsg data) : base(true) { this._data = data; } //SNIP
Usage:
// RequestMsg message = ... switch (message) { case RequestMsg.Play msg: // Need a cast here T_T PlayMsg play = (PlayMsg)msg.Data;
If we get rid of that and instead generate a strongly-type getter we don't need to cast `Data`:
public class Play : RequestMsg{ public PlayMsg Data { get; private set; } public Play(PlayMsg data) : base(true) { this.Data = data; } //SNIP
Attachments
Issue Links
- Dependency
-
THRIFT-1786 C# Union Typing
- Closed
- relates to
-
THRIFT-4715 C# union "data" should be strongly-typed
- Closed
- links to