Можно расшириться..\frag до его полного пути с путем твердости:
PS > resolve-path ..\frag
Попытка нормализовать путь с помощью объединения () метод:
[io.path]::Combine("fred\frog",(resolve-path ..\frag).path)
Просто для понимания: это возможность перехватывать такие события, как: создание объектов, установка свойств и т. Д., И прикреплять к ним общие функции , который будет заполнен соответствующим контекстом.
Поскольку C # не имеет встроенных средств для этого, вам понадобится структура, такая как PostSharp, для выполнения «переплетения байт-кода» (т.е. просто написания кода для фактического выполнения вызовов, напрямую в свои классы), чтобы смоделировать его.
Аспектно-ориентированное программирование означает наличие мета-уровня, на котором вы можете определить функции ведения журнала или безопасности / контроля доступа для переплетения с вашим кодом вместо того, чтобы вовремя реализовывать эти функции в вашем коде. Поэтому вместо того, чтобы быть одномерным, вы должны программировать двухмерное.
Я знаю, что это может показаться очень экзотеричным, но это легко, если вы это поняли.
АОП часто работает с прокси-классами, которые перехватывают вызовы и делают что-то в фоновом режиме.
Какой своевременный вопрос?
Вот подкаст, который стоит послушать.
Это даст вам хорошее представление о том, что такое АОП? где это можно использовать?
Надеюсь, это поможет.