NotImplementedExecption не было обработано! STUCK! - PullRequest
1 голос
/ 02 декабря 2010

Я создаю приложение для хранения транспортных средств, у меня есть основная форма с кнопками для загрузки отдельных форм для каждого типа транспортного средства (легковой, грузовой, автобусный), все они наследуют свои основные свойства из класса транспортных средств.У меня также есть класс «автопарк», так что все машины могут быть добавлены в парк.

Мне удалось получить первую рабочую машину, но я борюсь со второй (грузовой), яЯ могу нажать на кнопку, чтобы загрузить форму грузовика, и я могу ввести данные в текстовые поля, но когда я нажимаю кнопку «Закрыть» на форме, ничего не происходит!И когда я закрываю приложение, я получаю «NotImplementedExecption было необработано»

Любые идеи, что мне не хватает?Заранее спасибо ...

public partial class FrmHireCo : Form
    /*
     * This is the main form for the car hire system.
     * It allows the adding to new cars to the system, and displaying them in the fleet list
     * 
     */
{
    private Fleet myFleet = new Fleet();
    //Fleet object used to store cars

    public FrmHireCo()
    {
        //Default constructor
        InitializeComponent();
    }


    private void updateFleetList()
    {   
        lstFleet.Items.Clear();
        foreach (Vehicle v in myFleet.fleet)
        {
            lstFleet.Items.Add(v);
        }
    }

    private void btnAddCar_Click(object sender, EventArgs e)
    {
        //Add a new car
        FrmCar carGui = new FrmCar(); //Form used to add new car
        carGui.ShowDialog();
        Car myCar = carGui.car;         //Get new car from form
        myFleet.addToFleet(myCar);      //Add to fleet list
        updateFleetList();              //Uodate fleet list
    }

    private void lstFleet_SelectedIndexChanged(object sender, EventArgs e)
    {
        /*
         * This method is used to control the list box
         * It is called when a row is selected by the user, it then displays frmCar
         * with the car details
         */ 
        if (lstFleet.SelectedIndex > -1)
        {
            int index = lstFleet.SelectedIndex;
            Car myCar = myFleet.fleet.ElementAt(index);
            FrmCar carGui = new FrmCar();
            carGui.car = myCar;
            carGui.Show();
        }
    }

    private void FrmHireCo_Load(object sender, EventArgs e)
    {

    }

    private void btnAddTruck_Click(object sender, EventArgs e)
    {
        FrmTruck truckGui = new FrmTruck(); //Form used to add new car
        truckGui.ShowDialog();
        Truck myTruck = truckGui.truck;         //Get new car from form
        myFleet.addToFleet(myTruck);      //Add to fleet list
        updateFleetList();              //Uodate fleet list
    }

}

}}

Это моя основная форма с кнопками для загрузки формы грузовика и т. Д., Вот мой класс флота.Я думаю, что упускаю что-то действительно глупое!

class Fleet
{
    /*
     * This class is used to hold a list of Car objects that make up the fleet:
     * The car objects may be added through the addToFleet() method.
     * The car objects may be deleted tgrough the deleteFromFleet() method 
     * Use the fleet property to access the list of car objects
     */ 

    private List<Vehicle> theFleet = new List<Vehicle>(); //The list of car objects being stored

    public List<Vehicle> fleet 
        /* The fleet property. Note that you can only read it
         * use the addToFleet and deleteFromFleet to update it
         */
    {
        get
        {
            return theFleet;
        }
    }

    public void deleteFromFleet(Vehicle aVehicle)
        //Delete car from fleet
    {
        theFleet.Remove(aVehicle);
    }

    public void addToFleet(Vehicle aVehicle)
        //Add car to fleet
    {
        theFleet.Add(aVehicle);
    }

    internal void addToFleet(Truck myTruck)
    {
        throw new NotImplementedException();
    }
}

}

Это часть кода в режиме отладки, которая вызывает исключение NotImplementedException.

 internal void addToFleet(Truck myTruck)
    {
        throw new NotImplementedException();
    }
}

}

Ответы [ 4 ]

1 голос
/ 02 декабря 2010

Похоже, что в какой-то момент Visual Studio предложила вам «Сгенерировать заглушку метода для« addToFleet »в« Fleet »», и вы сказали «да». Когда Visual Studio генерирует метод для вас, он помещает throw new NotImplementedException(); внутрь как напоминание о том, что вам нужно вернуться и реализовать метод. Поэтому обычно вы просто удаляете строку, которая выдает исключение, и заменяете ее на любой другой код в методе.

Однако в вашем случае я не думаю, что вам нужен этот метод вообще. Я предполагаю, что Грузовик наследует от Транспортного средства; если это так, перегрузка addToFleet, которая принимает Vehicle, будет работать и для Trucks. Таким образом, вы можете просто удалить весь метод internal void addToFleet(Truck myTruck).

1 голос
/ 02 декабря 2010

Лучше всего использовать код, подобный следующему:

myFleet.fleet.Add(myTruck);

чем использовать ваши собственные функции добавления / удаления, которые в любом случае просто вызывают эти функции. Вы не скрыли их, если это было вашим намерением.

Что касается того, почему у вас возникает эта проблема ... вам следует поискать разрешение перегрузки и помнить, что внутреннее означает, что что-то в одной сборке может получить к нему доступ, так что пока эти два класса находятся в одной и той же сборке, вы будете продолжить эту проблему.

1 голос
/ 02 декабря 2010

Когда вы добавляете грузовик в свой парк, вы на самом деле звоните internal void addToFleet(Truck myTruck), а не public void addToFleet(Vehicle aVehicle), потому что компилятор вызывает метод, соответствующий типу, который вы передаете.

Отказ от метода internal.

0 голосов
/ 02 декабря 2010
internal void addToFleet(Truck myTruck) 
{ 
    throw new NotImplementedException(); 
} 

Судя по всему, вы не заметили ту часть кода, в которой реализована функция.Просто замените «выбросить новое NotImplementedException» на ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...