Как реализовать все методы при наследовании интерфейса на C#

Рейтинг: -1Ответов: 3Опубликовано: 13.03.2023

Я только начал писать на c#. Объясните пожалуйста, с чем связана ошибка: KeyDoorToDoor не реализует член интерфейса IDoor.Open(). И подскажите, как её исправить.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
interface IDoor
{
    void Open();

}//Интерфейс двери

class KeyDoorToDoor : IDoor
{
    KeyDoor door;
    public KeyDoorToDoor(KeyDoor d)
    {
        door = d;

        door.PutKey(); //вставляем ключ в дверь, чтобы открыть
        door.RotateKey(); //поворачиваем ключ, чтобы открыть дверь
        door.Open(); //Открываем
    }
  public void Open()
    {
        throw new NotImplementedException();
    }
} //Адаптер от PasDoor к IDoor

введите сюда описание изображения

Ответы

▲ 2Принят

Напутали со скобочками. Попробуйте так:

interface IDoor
{
    void Open();

}//Интерфейс двери

class KeyDoorToDoor : IDoor
{
    KeyDoor door;
    public KeyDoorToDoor(KeyDoor d)
    {
        door = d;

        door.PutKey(); //вставляем ключ в дверь, чтобы открыть
        door.RotateKey(); //поворачиваем ключ, чтобы открыть дверь
        door.Open(); //Открываем
    }

    public void Open()
    {
        throw new NotImplementedException();
    }

} //Адаптер от PasDoor к IDoor

введите сюда описание изображения

▲ 1

Реализуйте метод как то иначе, на данный момент он у вас сам и генерирует исключение. Генерация исключений

public void Open()
{
   // throw new NotImplementedException();
 
   Console.WriteLine("Открыли дверь");
}
▲ 0

Всё элементарно, вы фигурную скобку поставили не там:

введите сюда описание изображения

У вас вышло так, что метод оказался вне класса.