Существует другая возможность: у Вас может быть ошибка в Вашем .aspx файле, который не позволяет Visual Studio повторно создавать разработчика.
, Если Вы переключаетесь на Режим конструктора, он покажет управление как неспособное быть представленным. Фиксация управления (в моем случае это была дополнительная кавычка в свойствах) и перекомпиляции должна повторно создать разработчика.
Изменение кода во время компиляции не поддерживается, но кажется возможным с помощью неподдерживаемые внутренние API-интерфейсы javac, здесь - это сообщение со ссылкой на решение hanbuy-panno со ссылкой на код ...
В прошлом году я искал нечто подобное . Не существует стандартного способа изменения классов с помощью процессоров аннотаций или компилятора, и документация по API аннотаций рекомендует создавать декораторы.
Если вы готовы жить с хаками, взгляните на Adrian Kuhn . использование частного API, где он добавляет литералы римских чисел в Java . Этот подход ограничен компилятором Sun javac, и вам нужно будет реализовать что-то еще, если вы используете другой (например, компилятор Eclipse).
Изменить: любой, кто интересуется этой областью, должен проверить Project Lombok .
Что-то должно обрабатывать аннотации, поэтому это происходит либо во время компиляции с помощью процессора аннотаций, либо во время выполнения с отражением (да, я знаю, есть даже более экзотические способы сделать это во время выполнения) .
Он определенно использует процессор аннотаций, просто он неявный. Команда javac
будет искать в пути к классу процессоры аннотаций, если они не установлены явно.
Поскольку он использует эту команду для компиляции:
javac -cp ~ / development / panno / build / hanhuy-panno.jar * .java
Мы видим, что он изменил путь к классам, включив в него hanhuy-panno.jar
, который будет содержать обработчик аннотаций.
Почему бы просто не написать этому парню по электронной почте и спросить, даст ли он вам код?
Вы можете это сделать, но не должны изменять класс, содержащий аннотации. (Уловка, на которую вы ссылаетесь, использует api дерева компиляции для изменения генерируемого байт-кода ...) Это не поддерживается и, вероятно, будет защищено в более поздних Java SDK.
Правильный способ сделать это - создать суперкласс , подкласс или класс-оболочка.
Я написал набор аннотаций, которые генерируют геттеры / сеттеры и другие забавные вещи. Я создаю суперкласс.
См. http://code.google.com/p/javadude/wiki/Annotations
Вы можете делать такие вещи, как
package sample;
import com.javadude.annotation.Bean;
import com.javadude.annotation.Property;
import com.javadude.annotation.PropertyKind;
@Bean(properties={
@Property(name="name"),
@Property(name="phone", bound=true),
@Property(name="friend", type=Person.class, kind=PropertyKind.LIST)
})
public class Person extends PersonGen {
}
, и он сгенерирует для вас PersonGen с поддержка полей / геттеров / сеттеров и связанных свойств.