Я работаю в C#, пытаясь реализовать 2 класса, которые используют один и тот же интерфейс. Для обоих классов требуется только один метод. Однако эти два метода должны быть разных типов, принимая разные параметры. Мне бы очень хотелось, чтобы унаследовать один метод от интерфейса и перезаписать его в каждом классе, так как это было бы красиво и аккуратно (интерфейс необходим для функциональности программы (работает с инъекцией зависимостей)) К сожалению, оба класса также необходимо, так как класс отправителя электронной почты будет использоваться повторно в других программах.Различные реализации одного метода интерфейса
Я нашел решение, которое ПОЧТИ подходит моя проблема, это: Implementing methods from an interface but with different parameters
Разница, что у меня есть то, что каждый из двух моих классов должен вызвать только один метод.
Вот мой код, как он стоит (попытавшись реализовать дженерики в предыдущем решении):
interface IEmailSender<T>
{
T DoEmail();
}
public class EmailGenerator : IEmailSender<MailMessage>
{
public override MailMessage DoEmail(string emailAddress)
{
MailMessage message = new MailMessage();
//code to generate email message
return message;
}
}
public class EmailSender : IEmailSender<bool>
{
public override bool DoEmail(MailMessage message)
{
//code to send email
return true;
}
}
В идеале я хотел бы мой метод электронной почты отправителя недействительным, но я не против возвращая логическое значение, если оно должно иметь возвращаемое значение.
Надеюсь, что это имеет смысл, я буквально просто стараюсь быть аккуратным здесь, потому что в настоящее время, чтобы заставить его работать, мне нужно будет иметь два метода в моем интерфейсе и каждый класс вызовет пустой метод.
Спасибо заранее,
Не могли бы вы объяснить, почему эти два класса должны «разделять» один и тот же интерфейс? Кажется, они не делают подобных вещей, не так ли? –
Я изначально хотел, чтобы один «электронный» интерфейс обрабатывал оба класса, которые занимались электронной почтой. Если нет способа сделать это, тогда мне придется их разделить. –