В Терракота мы используем AOP и инструментарий байт-кода довольно экстенсивно для интеграции с и инструментальное стороннее программное обеспечение. Например, наш Spring intergration выполняется в значительной степени при помощи aspectwerkz. Короче говоря мы должны прервать вызовы к бобам Spring и бобовым фабрикам в различных точках для кластеризации их.
, Таким образом, AOP может быть полезен для интеграции со сторонним кодом, который не может иначе быть изменен. Однако мы нашли, что существует огромная ловушка - если это возможно, только используйте сторонний API общественности в своих точках соединения, иначе Вы рискуете повреждать свой код изменением в некотором закрытом методе в следующем незначительном выпуске, и это становится кошмаром обслуживания.
Нет. Интерфейсы реализованы в виде таблиц функций (в основном это простая таблица виртуальных методов), и компилятор должен знать, что есть функция, на которую нужно сопоставить свойство. Вы можете объявить свойство в интерфейсе, но оно должно иметь функции как значения получателя / установщика, а не поля. Однако вы можете сделать его доступным только для чтения или только для записи.
При работе со свойствами в интерфейсе считайте свойство ярлыком для средства чтения / записи. Для выполнения ярлыка требуется только один ... иначе он ни на что не указывает.