Guest User

Untitled

a guest
Aug 17th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. Doing a CompareTo is giving an error Object must be of type int32
  2. public interface IData
  3. {
  4. bool EqualsTo(IData otherData);
  5. }
  6.  
  7. public class IntegerData : IData
  8. {
  9. int _data;
  10.  
  11. public IntegerData(int data)
  12. {
  13. _data = data;
  14. }
  15.  
  16. public bool EqualsTo(IData otherData)
  17. {
  18. if(_data.CompareTo(otherData) == 0)
  19. return true;
  20.  
  21. return false;
  22. }
  23. }
  24.  
  25. if(_data.CompareTo(otherData) == 0)
  26.  
  27. Object must of type int32
  28.  
  29. IData FirstData = new IntegerData(5);
  30. IData FirstData = new SecondData(5);
  31.  
  32. bool result = FirstData.Value.EqualsTo(SecondData.Value);
  33.  
  34. if ( <intValue>.CompareTo(<IData object>) == 0 )
  35. { (...) }
  36.  
  37. if ( <intValue>.CompareTo(<int value>) == 0 )
  38. { (...) }
  39.  
  40. public bool EqualsTo(IData otherData)
  41. {
  42. if(_data.CompareTo(otherData._data) == 0)
  43. return true;
  44. return false;
  45. }
  46.  
  47. public interface IData : IEquatable<IData> { }
  48.  
  49. public class IntegerData : IData
  50. {
  51. // The value will be private for this example
  52. // Could be public int Value { get; private set; }
  53. private int Value { get; set; }
  54.  
  55. // Constructor
  56. public IntegerData(int value) { Value = value; }
  57.  
  58. // Implements Equals (from IEquatable - IData)
  59. public bool Equals(IData other)
  60. { return Value.Equals(other.Value); }
  61. }
  62.  
  63. // An interface that is based on IEquatable for better compatibility but also
  64. // enables you to create a diferent EqualsTo method...
  65. public interface IData<T> : IEquatable<T>
  66. {
  67. T GetData();
  68. int GetDataHash();
  69. bool EqualsTo(IData<T> other);
  70. }
  71.  
  72. // One class (string)
  73. public class StringData : IData<string>
  74. {
  75. private string Value { get; set; }
  76.  
  77. public StringData(string value) { Value = value; }
  78.  
  79. public string GetData() { return Value; }
  80. public int GetDataHash() { return GetData().GetHashCode(); }
  81.  
  82. // From IEquatable
  83. public bool Equals(string other)
  84. { return Value.Equals(other); }
  85.  
  86. // From IData (customized to compare the hash from raw value)
  87. public bool EqualsTo(IData<string> other)
  88. { return GetDataHash() == other.GetDataHash(); }
  89. }
  90.  
  91. // Another class (int)
  92. public class IntData : IData<int>
  93. {
  94. private int Value { get; set; }
  95.  
  96. public IntData(int value) { Value = value; }
  97.  
  98. public int GetData() { return Value; }
  99. public int GetDataHash() { return GetData().GetHashCode(); }
  100.  
  101. // Again from IEquatable
  102. public bool Equals(int other)
  103. { return Value == other; }
  104.  
  105. // Again from IData (customized to compare just the hash code)
  106. public bool EqualsTo(IData<int> other)
  107. { return GetDataHash() == other.GetDataHash(); }
  108. }
  109.  
  110. if(_data.CompareTo(((IntegerData)otherData)._data) == 0)
  111.  
  112. public interface IData<T>
  113. {
  114. bool EqualsTo(IData<T> otherData);
  115. }
  116.  
  117. public class MyData<T> : IData<T>
  118. {
  119. private T _data;
  120.  
  121. public MyData(T data)
  122. {
  123. _data = data;
  124. }
  125.  
  126. public bool EqualsTo(IData<T> otherData)
  127. {
  128. if (_data is IComparable
  129. && otherData is MyData<T>
  130. && ((IComparable)_data).CompareTo(((MyData<T>)otherData)._data) == 0)
  131. {
  132. return true;
  133. }
  134. return false;
  135. }
  136. }
  137.  
  138. static void Main(string[] args)
  139. {
  140.  
  141. MyData<int> myInts1 = new MyData<int>(5);
  142. MyData<int> myInts2 = new MyData<int>(5);
  143. MyData<int> myInts3 = new MyData<int>(10);
  144. MyData<string> myString1 = new MyData<string>("Hello");
  145. MyData<string> myString2 = new MyData<string>("Hello");
  146. MyData<string> myString3 = new MyData<string>("World");
  147. if (myInts1.EqualsTo(myInts2)) Console.WriteLine("Yay");
  148. if (!myInts1.EqualsTo(myInts3)) Console.WriteLine("Nay");
  149. if (myString1.EqualsTo(myString2)) Console.WriteLine("Yay");
  150. if (!myString1.EqualsTo(myString3)) Console.WriteLine("Nay");
  151. }
  152.  
  153. public interface IData<T>
  154. {
  155. bool EqualsTo(IData otherData);
  156. T GetData();
  157. }
  158.  
  159. public class IntegerData : IData<int>
  160. {
  161. int _data;
  162.  
  163. public int GetData(){
  164. return _data;
  165. }
  166.  
  167. public IntegerData(int data)
  168. {
  169. _data = data;
  170. }
  171.  
  172. public bool EqualsTo(IData otherData)
  173. {
  174. if(_data.CompareTo(otherData.GetData()) == 0)
  175. return true;
  176.  
  177. return false;
  178. }
  179. }
Add Comment
Please, Sign In to add comment