[ https://issues.apache.org/jira/browse/THRIFT-4722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jens Geyer updated THRIFT-4722: ------------------------------- Patch Info: Patch Available > Netcore union "data" should be strongly-typed > --------------------------------------------- > > Key: THRIFT-4722 > URL: https://issues.apache.org/jira/browse/THRIFT-4722 > Project: Thrift > Issue Type: Improvement > Components: netcore - Compiler > Affects Versions: 0.12.0 > Reporter: J W > Assignee: Jens Geyer > Priority: Minor > Time Spent: 10m > Remaining Estimate: 0h > > Following thrift: > ```thrift > struct PlayMsg > { 1: string url, } > union RequestMsg > { 1: PlayMsg Play, } > ``` > Generates: > {code:java} > 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{code} > Usage: > {code:java} > // RequestMsg message = ... > switch (message) > { > case RequestMsg.Play msg: > // Need a cast here T_T > PlayMsg play = (PlayMsg)msg.Data; > {code} > If we get rid of that and instead generate a strongly-type getter we don't > need to cast `Data`: > {code:java} > public class Play : RequestMsg{ > public PlayMsg Data { get; private set; } > public Play(PlayMsg data) : base(true) > { this.Data = data; } > //SNIP > {code} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)