(Обновление: мое внимание было обращено на то, что метод Quit не должен принимать параметры, и я слишком усложнил его, предполагая, что это необходимо. Я собираюсь настроить его сейчас и посмотреть, работает ли он.)
У меня есть 2 класса, Employee и Person, и интерфейс с именем iQuittable.Сотрудник наследует от Person свойства FirstName и LastName.
Я должен использовать полиморфизм для создания объекта интерфейса IQuittable и вызова для него метода Quit.Поскольку Employee также наследуется от IQuittable, я попытался преобразовать Employee в объект IQuittable.Проблема заключается в том, что после преобразования он больше не имеет доступа к свойствам Person.Метод Quit использует FirstName и LastName от Person, поэтому я попытался поместить эти свойства в файл интерфейса и быстро понял, что это невозможно.
Как я могу преобразовать Employee в IQuittable и при этом сохранить свойства Person?
Примечание. Я изменил параметры метода Quit, чтобы вместо параметра Employee принимать параметры iQuittable, поскольку я использовал полиморфизм для Employee.Это неправильно?Есть места, где «сотрудник» все еще остается нетронутым, потому что я пытался изменить его, и это все равно давало мне ошибки, и я не был уверен, стоит ли его менять.
Я был бы очень признателен, если бы кто-нибудь взглянул на мой код ниже и сказал, что нужно настроить, чтобы Quit можно было вызывать для объекта iQuittable и при этом иметь свойства FirstName и LastName.
**Program file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
class Program
{
static void Main(string[] args)
{
IQuittable NewEmployee = new Employee();
NewEmployee.FirstName = "Kitty";
NewEmployee.LastName = "Katz";
NewEmployee.Quit(NewEmployee);
Console.ReadLine();
}
}
}
**Person file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
public abstract class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
**Employee file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
class Employee : Person, IQuittable
{
public void Quit(IQuittable Quitter)
{
Console.WriteLine(Employee.FirstName + " " + Employee.LastName + " has quit.");
}
}
}
**Interface file:**
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace interfaces
{
interface IQuittable
{
void Quit(IQuittable Quitter);
}
}