Я думаю, что это должно работать. Это могло бы быть выключено на наклонных чертах. Не уверенный, если они необходимы или нет.
string url = Request.ApplicationPath + "/" + photosLocation + "/" + files[0];
Сначала скажем, что такое сообщение и метод:
сообщение - это имя, которое может быть отправлено от одного объекта к другому, возможно, с дополнительными объектами в качестве аргументов. . Например в
снятие средств со счета: 100
Сообщение имеет вид отзыва:
(Синтаксис Smalltalk.) (Другие языки могут писать account.withdraw (100)
.) Объект, получающий сообщение, в этом примере учетная запись
называется получателем .
Метод - это реализация, которая может быть вызвана в ответ на сообщение.
Эти идеи разделяются между множество объектно-ориентированных языков, иногда под разными именами. Например, C ++ вызывает сообщение как «виртуальную функцию-член».
Теперь:
Отправка метода - это алгоритм, используемый для решения , какой метод должен быть вызван в ответ на сообщение. Алгоритмы сильно различаются в зависимости от языка:
Такие языки, как Smalltalk, которые имеют классы и единственное наследование, обращаются к классу получателя. Если метод определен в этом классе, этот метод вызывается. В противном случае алгоритм проверяет уникальный суперкласс и т. Д.
В C ++ метод по-прежнему определяется классом получателя, но поскольку класс может иметь несколько суперклассов, проблема выбора метода для вызова более сложна. .
В таких языках, как Self, у которых есть методы, но нет классов, метод либо находится в названном слоте на самом приемнике, либо, возможно, находится в прототипе, из которого был клонирован объект.
В более продвинутых объектно-ориентированных языках алгоритм диспетчеризации методов проверяет не только получателя, но и аргументы , которые передаются вместе с сообщением. Эту идею иногда называют «мультиметодами». (В какой-то степени этот метод может быть смоделирован с использованием того, что Smalltalk называет двойной диспетчеризацией , но это требует затрат на программирование и производительности.) Я считаю, что все языки Сесил, Дизель и Дилан используют некоторую форму многометодной диспетчеризации, но я ' м балансирует на грани моего опыта.
Трудно сказать без контекста, но я бы описал это как процесс, требующий метода вызов в исходном коде, решает, какой метод требует выполнения, и выполняет его, выполняя любые преобразования аргументов, значения по умолчанию и т. д. в соответствии с требованиями языка.
Часть принятия решения при отправке метода может быть чисто во время выполнения (например, на динамическом языке) , чисто во время компиляции (например, вызов статического метода в C # / Java) или того и другого (вызов виртуального метода в C # / Java).
Различные языки могут иметь существенно разные подходы к диспетчеризации методов.