С кодом, подобным следующему
public class Task
{
string Name;
public static bool operator ==(Task t1, Task t2)
{ return t1.Name = t2.Name && t1.GetType() == t2.GetType(); }
}
public class TaskA : Task
{
int aThing;
public static bool operator ==(TaskA t1, TaskA t2)
{
return (Task)t1 == (Task)t2 && t1.GetType() == t2.GetType()
&& t1.aThing == t2.aThing; }
}
public class TaskB : Task //more of the same
class Stuffin
{
List<Task> Tasks;
void CheckIt()
{
bool theSame = Tasks[0] == Tasks[1];
}
Я пытаюсь убедиться, что производный оператор (TaskA. ==) вызван.
Я получаю ошибку компиляции при попытке использовать технику здесь .
Я думаю, что смог бы заставить его работать правильно, если бы оператор не был статичным, потому что тогда я мог бы переопределить оператор базового класса. Это возможно?
Как только я получу это, как мне сравнить базовые свойства (я думаю, приведение к типу задачи [(Task) t1 == (Task) t2] не будет работать)?