Как упоминает Эрнест Фридман-Хилл, с вашим текущим архетудом флаги установлены неправильно.
Возможно, стоит упомянуть (не видя полного источника для ваших классов), похоже,возможно, ваша иерархия объектов не совсем стандартная ООП.Вероятно, вы должны иметь класс Mechanism, содержащий все члены, которые являются общими для различных классов, производных от Mechanism, и переопределять любые методы, которые могут различаться между этими двумя, но имеет смысл иметь в обоих.Это также делает достойным доказательство того, что Механизм является абстрактным базовым классом.
Смехотворно упрощенный пример приведен ниже:
public class Mechanism {
public string Vin {get;set;}
}
public class Auto : Mechanism {
public int NumberOfDoors {get;set;
public override string ToString() {
return string.Format("{0}, {1}", Vin, NumberOfDoors);
}
}
public class Motorcycle : Mechanism {
public string TypeOfMotorcycle {get;set; }
public override string ToString() {
return string.Format("{0}, {1}", Vin, TypeOfMotorcycle );
}
}
foreach (Mechanism m in mechanisms) {
Console.Print(m.ToString());
}