У меня есть базовый класс Class1 и производный класс2. Я создаю два экземпляра class2, но определяется как class1.
Моя проблема в том, что я не могу сделать общее сравнение между этими объектами.
Вот пример:
public class Class1
{
public int Property1 = 0;
}
public class Class2 : Class1
{
public int Property2 = 0;
public static bool operator ==(Class2 c1, Class2 c2)
{
return c1.Property2 == c2.Property2;
}
public static bool operator !=(Class2 c1, Class2 c2)
{
return c1.Property2 != c2.Property2;
}
}
public class Class3 : Class1
{
public int Property3 = 0;
}
static void Main(string[] args)
{
Class1 obj1 = new Class2();
Class1 obj2 = new Class2();
if (obj1 == obj2)
{
Console.WriteLine("Yes !!! The two objects are equal!");
}
else
{
Console.WriteLine("The two objects are not equal.");
}
}
если я изменю строку:
if (obj1 == obj2)
для:
if ((Class2)obj1 == (Class2)obj2)
все в порядке, но если obj1 и obj2 относятся к Class3, я получаю ошибку
Как я могу решить это?
Спасибо
Crandel