[ 
https://issues.apache.org/jira/browse/THRIFT-1742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13527563#comment-13527563
 ] 

Jens Geyer edited comment on THRIFT-1742 at 12/9/12 6:33 PM:
-------------------------------------------------------------

Can't say much about the hash itslf, but this IDL causes a compiler error after 
applying the patch. Note the "Object" member. I want to emphasize that the code 
indeed compiled before, despite the Object member.

{code}
struct ProductText {
  1 : required string Object,     
  2 : required string TextTypeID, 
  3 : required string TextTypeDisplay,      
  4 : required string Content      
}
{code}

Generated Equals() code:

{code}
    public override bool Equals(object that) {
      var other = that as ProductText;
      if (other == null) return false;
      if (Object.ReferenceEquals(this, other)) return true;
      return ((__isset.Object == other.__isset.Object) && ((!__isset.Object) || 
(Object.Equals(other.Object))))
        && ((__isset.TextTypeID == other.__isset.TextTypeID) && 
((!__isset.TextTypeID) || (TextTypeID.Equals(other.TextTypeID))))
        && ((__isset.TextTypeDisplay == other.__isset.TextTypeDisplay) && 
((!__isset.TextTypeDisplay) || (TextTypeDisplay.Equals(other.TextTypeDisplay))))
        && ((__isset.Content == other.__isset.Content) && ((!__isset.Content) 
|| (Content.Equals(other.Content))));
    }

{code}

Eror: Member 'object.ReferenceEquals(object, object)' cannot be accessed with 
an instance reference; qualify it with a type name instead.



                
      was (Author: jensg):
    Can't say much about the hash itslf, but this IDL causes a compiler error 
after applying the patch. Note the "Object" member.

{code}
struct ProductText {
  1 : required string Object,     
  2 : required string TextTypeID, 
  3 : required string TextTypeDisplay,      
  4 : required string Content      
}
{code}

Generated Equals() code:

{code}
    public override bool Equals(object that) {
      var other = that as ProductText;
      if (other == null) return false;
      if (Object.ReferenceEquals(this, other)) return true;
      return ((__isset.Object == other.__isset.Object) && ((!__isset.Object) || 
(Object.Equals(other.Object))))
        && ((__isset.TextTypeID == other.__isset.TextTypeID) && 
((!__isset.TextTypeID) || (TextTypeID.Equals(other.TextTypeID))))
        && ((__isset.TextTypeDisplay == other.__isset.TextTypeDisplay) && 
((!__isset.TextTypeDisplay) || (TextTypeDisplay.Equals(other.TextTypeDisplay))))
        && ((__isset.Content == other.__isset.Content) && ((!__isset.Content) 
|| (Content.Equals(other.Content))));
    }

{code}

Member 'object.ReferenceEquals(object, object)' cannot be accessed with an 
instance reference; qualify it with a type name instead

                  
> Optionally implement hashcode and equals in c#
> ----------------------------------------------
>
>                 Key: THRIFT-1742
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1742
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C# - Compiler
>            Reporter: T Jake Luciani
>         Attachments: 1742.patch
>
>
> It would be very helpful to have a compiler flag that implements hashCode and 
> equals for c# generated structs.  Java has this capability.

--
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

Reply via email to