Reputation: 3628
I am writing an algorithm which requires the user to create his own class which inherits from a class defined by me. However, the algorithm requires the user to override the Equals and GetHashCode functions from the C# standard libraries.
Can I force the class inherited from my class to implement the GetHashCode and Equals functions?
public abstract int GetHashCode();
Writing this in my base class is not an option, as my base class inherits GetHashCode from it's parent, where it is implemented already.
Upvotes: 9
Views: 2531
Reputation: 12859
You can create 2 new methods that will be abstract and will be called from GetHashCode
and Equals
your class.
Example:
public abstract ParentClass {
public abstract int MyGetHashCode();
public override int GetHashCode(){
return MyGetHashCode();
}
// same thing for Equals
}
Upvotes: 3
Reputation: 12786
In your class:
public override bool Equals(object obj)
{
throw new System.NotImplementedException();
}
public override int GetHashCode()
{
throw new System.NotImplementedException();
}
This means that if they don't override it the function will fail by exception. This forces them to override it to get it to work.
Upvotes: 0
Reputation: 73502
This is what you're looking for. Since your class is abstract you can pretty much do this without any problem.
public abstract override int GetHashCode();
This despite of it derived from some other class, this makes your sub class must override this method.
Upvotes: 15