Im vorherigen Post habe ich, wie man an den Kommentaren sehen kann, das Problem nicht richtig dargelegt. Es geht mir nicht um das Exception-Handling sondern um die Tatsache, dass eine Klasse, die ja per Design mit null Instanziiert werden kann, nicht mehr mit null Instanziiert werden kann wenn die Schnittstelle IComparable<T> implementiert wird. Konkreter Weise geht es eigentlich um das Überschrieben bzw. Implementieren der Methoden und Operatoren:

  • public override bool Equals(object obj)
  • public bool Equals(T other)
  • ==
  • !=
  • <
  • >

Die Operatoren == und != verwenden beide die Methode public bool Equals(T other) zum vergleichen der Instanzen. Um die Instanzen tatsächlich nach ihrem Inhalt zu vergleichen, ist es nötig jede einzelne Eigenschaft der beiden Instanzen miteinander zu vergleichen. Um zu verdeutlichen was mein Problem ist, habe ich hier eine Testklasse mit dem Konzept von dem ich spreche.

namespace ClassTests
{
    using System;

    public class Test :IComparable<Test>
    {public int Number{ get; set; }
public Test(){}
public int CompareTo(Test other){    return this.Number.CompareTo(other.Number);   }
public static bool operator ==(Test t1, Test t2){    return t1.Equals(t2);}
public static bool operator !=(Test t1, Test t2){    return !t1.Equals(t2);}
public override bool Equals(object obj){    Test test = obj as Test;
    if (test != null)    {return this.Equals(test);    }
    return false;
}
public bool Equals(Test other){   if (this.Number.CompareTo(other.Number) != 0)    {return false;    }
    return true;}

    }
}

Mein Problem beginnt ab dann, wenn die Operatoren == und != überschrieben werden.
Vieleicht kennt ja jemand einen anderen Weg als im vorherigen Post.

Technorati-Tags:  |  |  |  | 
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
kick it on dotnet-kicks.de