Я работаю над классом, который должен запускать другой метод обработки, основанный на типе объекта, в котором я проходил. Я думал, что перегрузка может работать здесь, но у меня есть вопрос. Допустим, у меня есть два интерфейса:Подписи наследования и методов на C#
public interface IEmail
{
Some properties ...
}
и
public interface ISpecialEmail : IEmail
{
Some more properties....
}
и класс для обработки этих объектов:
public class EmailProcessor
{
public void ProcessEmail (IEmail email)
{
do stuff;
}
public void ProcessEmail (ISpecialEmail email)
{
do different stuff
}
}
Мой вопрос, в том, что ISpecialEmail наследует от IEmail, таковы сигнатуры методов, достаточно разные, чтобы допускать перегрузку? Моя оригинальная мысль заключается в том, что электронные письма ISpecialEmail также запускают подпись IEmail, так как технически этот интерфейс также реализуется.
Благодарим за помощь.
Если он компилируется, тогда он должен работать нормально. Невозможно, чтобы компилятор/среда выполнения позволяла одному вызову метода запускать две отдельные функции одновременно – musefan
Почему бы вам не попробовать скомпилировать программу и не увидеть, что происходит. У вас уже есть большая часть кода, необходимого для проверки этого. Почему вы не попробовали это, прежде чем публиковать его здесь? – Servy
@musefan Обратите внимание, что речь идет не только о двусмысленности, но о том, какая перегрузка будет выбрана. Вам нужно сделать больше, чтобы увидеть, что * если * он компилируется, вам нужно определить, какая перегрузка компилятор считает «лучшей». Тем не менее, это все еще простая вещь; это просто означает, что вам нужно запустить его один раз после его компиляции. – Servy