В настоящее время я пишу приложение с родительским классом с именем «Транспортное средство» и двумя дочерними классами с именем «Автомобиль» и «Грузовик». Моя проблема заключается в том, что я хотел бы искать полный список транспортных средств и возвращать только каждый автомобиль или каждый грузовик в зависимости от того, какой объект помещен в метод. Сейчас я должен написать метод для термина поиска ACH, такие, как показано ниже:C# - Как проверить тип объекта, используя оператор If
public string searchCarsByName(string nameString)
{
string carNames = "";
foreach (Car car in Vehicles.OfType<Car>())
{
if (car.Name.Contains(nameString))
{
carNames += car.ToString();
}
}
if (carNames == "")
{
return "No cars found";
}
else
{
return carNames;
}
}
public string searchTrucksByName(string nameString)
{
string truckNames = "";
foreach (Truck truck in Vehicles.OfType<Truck>())
{
if (truck.Name.Contains(nameString))
{
truckNames += name.ToString();
}
}
if (truckNames == "")
{
return "No vehicle found";
}
else
{
return truckNames;
}
}
Моя единственная проблема заключается в том, что имена не единственный способ, которым я хотел бы найти, так что для каждого поиска я иду для выполнения тогда мне придется написать два метода. Что я ищу способ, чтобы передать объект в метод, а затем в зависимости от объекта, он будет добавлять необходимые детали в строку, например, как показано ниже:
public string searchVehiclesByName(Vehicle nameString)
{
string vehicleNames = "";
if(Vehicle.Type == car)
{
foreach (Car car in Vehicles.OfType<Car>())
{
if (car.Name.Contains(nameString))
{
vehicleNames += car.ToString();
}
}
}
else
{
foreach (Truck truck in Vehicles.OfType<Truck>())
{
if (truck.Name.Contains(nameString))
{
vehicleNames += truck.ToString();
}
}
}
if (vehicleNames == "")
{
return "No vehicles found";
}
else
{
return vehicleNames;
}
}
}
По существу то, что мне нужно, - это способ передать родительский объект и проверить, является ли объект определенным дочерним типом, прежде чем создавать результирующую строку, вместо того, чтобы передавать каждый отдельный тип дочернего объекта в метод для получения желаемых результатов.
Заранее спасибо.
проверьте этот ответ. http://stackoverflow.com/questions/983030/type-checking-typeof-gettype-or-is – Mana
У * все * транспортные средства имеют * имя *? Возможно, свойство 'Name' должно быть в классе транспортных средств? – musefan