[ https://issues.apache.org/jira/browse/THRIFT-1127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13094990#comment-13094990 ]
Thunder Stumpges commented on THRIFT-1127: ------------------------------------------ The point of the default constructor is to initialize member default values. However in a case where you have none (or need to have none in order to provide your own), I agree that it should not generate one. I am working on a patch that will generate the default constructor (as it does today) only if there are one or more members that have default values specified. I believe this should work for you (it works for me!) > C# should not generate default constructor > ------------------------------------------ > > Key: THRIFT-1127 > URL: https://issues.apache.org/jira/browse/THRIFT-1127 > Project: Thrift > Issue Type: Bug > Components: C# - Compiler > Affects Versions: 0.5 > Reporter: William Blinn > > The C# code generator should not produce a default constructor. > Thrift generates partial classes for thrift structs, meaning that the class > may be spread across multiple files and csc will link them to be a separate > file. When the thrift generated class has the partial constructor, it cannot > be added in other files. This is a problem if you want to implement a default > constructor that does some initialization to the data in the class. > For example, this thrift code: > {code} > struct DateTime > { > 1: required i64 ticks, > } > {code} > produces > {code} > /** > * Autogenerated by Thrift > * > * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING > */ > using System; > using System.Collections; > using System.Collections.Generic; > using System.Text; > using System.IO; > using Thrift; > using Thrift.Collections; > using Thrift.Protocol; > using Thrift.Transport; > namespace Thrift.Generated > { > [Serializable] > public partial class DateTime : TBase > { > private long _ticks; > public long Ticks > { > get > { > return _ticks; > } > set > { > __isset.ticks = true; > this._ticks = value; > } > } > public Isset __isset; > [Serializable] > public struct Isset { > public bool ticks; > } > public DateTime() { > } > public void Read (TProtocol iprot) > ... > {code} > It would be great if it instead produced code like this: > {code} > /** > * Autogenerated by Thrift > * > * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING > */ > using System; > using System.Collections; > using System.Collections.Generic; > using System.Text; > using System.IO; > using Thrift; > using Thrift.Collections; > using Thrift.Protocol; > using Thrift.Transport; > namespace Thrift.Generated > { > [Serializable] > public partial class DateTime : TBase > { > private long _ticks; > public long Ticks > { > get > { > return _ticks; > } > set > { > __isset.ticks = true; > this._ticks = value; > } > } > public Isset __isset; > [Serializable] > public struct Isset { > public bool ticks; > } > public void Read (TProtocol iprot) > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira