Рассмотрим эти классы:
public class BaseClass {
public int SomeInt { get; set; }
public bool SomeBool { get; set; }
public BaseClass(int i, bool b) {
SomeInt = i;
SomeBool = b;
}
}
public class InheritedClass : BaseClass {
public List<Int32> SomeInts { get; set; }
public InheritedClass(int i, bool b, List<Int32> ints): base(i, b) {
SomeInts = ints;
}
public InheritedClass(BaseClass b, List<Int32> ints) : base(b.SomeInt, b.SomeBool) {
SomeInts = ints;
}
}
И у меня есть экземпляр InheritedClass
, я хочу получить его значение HashCode, если бы оно было BaseClass
.Я пытался разыграть его:
BaseClass x = new BaseClass(10, true);
Console.WriteLine("HashCode x: {0}", x.GetHashCode());
InheritedClass iX = new InheritedClass(x, new List<int> { 1, 2, 3 });
Console.WriteLine("HashCode iX: {0}", iX.GetHashCode());
BaseClass bX = (BaseClass)iX;
//I've also tried:
//BaseClass bX = ix as BaseClass;
Console.WriteLine("Base HashCode bX: {0}", bX.GetHashCode());
Но последний WriteLine
возвращает хеш-код, как если бы это был InhertiedClass
.Я не могу переопределить GetHashCode
из InheritedClass
и сохранить создание нового BaseClass
из свойств объекта, есть ли способ получить нужный мне HashCode?