У меня есть доступ к абстрактному методу, который принимает тип под названием «Оружие».передать объект и преобразовать его на лету
Объект, который я передаю, имеет ссылку на родителя, но мне нужно сделать преобразование.
Выполнение одного действия, похоже, работает нормально, но для других методов мне может понадобиться передать 3, 4 или даже 5 объектов, что означает, что мне придется преобразовать все из них, прежде чем я смогу получить доступ свойства, которые мне нужны.
Есть ли способ передать в преобразовании вместо фактического объекта, который содержит ссылку?
Что-то вроде этого, и я знаю, что это не компилируется:
GetRobotSystems(Weapon r=(MilitaryRobot)r.Baserobot)
Вот рабочий код:
protected override IEnumerable<WeaponsCollection> GetRobotSystems(Weapon robot)
{
MilitaryRobot r = (MilitaryRobot)robot.BaseRobot;
yield return r.Aromor;
yield return r.Weapons;
}
Я не понимаю, чего вы пытаетесь достичь. Если метод ожидает «MilitaryRobot», почему бы не изменить объявление метода соответственно? – Amy
Я чувствую, что основная причина проблемы заключается в вашем дизайне и дать вам какую-то конкретную помощь, вам нужно будет опубликовать хотя бы часть вашей иерархии классов. –