문제

배경

나는 몇 가지 스크립트를 실행의 한 부분으로 나를 구축하는 프로세스에서 볼 다양한 소스 코드 파일을 생성하고 몇 가지 이상의 소스 코드습니다.

스크립트를 사용하 CodeDom 를 생성하고 그들은 읽 .cs 파일을 사용하여 간단한 텍스트 리더입니다.

질문

스크립트 중 하나를 찾고에 대한 사용의 특정 클래스라는 특성 PageMenuItem 그리고 그 목적을 정의 목록 페이지 메뉴의 항목입니다.

그것이 지금 읽어 모두의 .cs 파일 및 보 "PageMenuItem" 특성에,그것의 수를 계산합한 인수하려고는 생성자를 사용할 수 있도록 당겨져 다양한 조각의 정보입니다.

7 생성자 PageMenuItem 다양한 매개변수,그래서 그것은 매우 어려운 결정에서 .cs 는 소스 코드를 생성자를 사용되고 있고,따라서는 방법을 분석하는 정보.

대신문을 원하는 텍스트,자신하고 싶은 단순히 구축 PageMenuItem 체에서 메모리를 사용하여 다음의 속성입니다.

그래서 나는 방법을 필요로 합의 특성 선언 .cs 파일 구성의 새 인스턴스 PageMenuItem 습니다.

하는 것이 가능할까요?


다른 방법으로의 이 질문:

이 문자열:

string myCodeStatement = "[MyAttribute(\"asdf\", \"foo\")]";

는 방법을 만들 수 있는 개체의 유형 MyAttribute 그래서 나는 일할 수 있는가?내가 전체에 액세스하는 소스 코드를 정의합 MyAttribute.

도움이 되었습니까?

해결책 4

이 스크립트는 빌드 프로세스의 일부,그래서 그것이 필요합니다.또한,그것의 소스 코드를 생성하는 것을 얻을 컴파일되므로 내가를 피하려고"두 컴파일하기"나의 프로젝트입니다.

또한 있고 싶지 않을 컴파일하고 부하는 어셈블리만을 반영하여 그것에 대하여,어느 것"비싸다"할 수백 시간 동안 프로세스를 구축 합니다.

내가 결정하는 데 필요한 해결하는 방법을 나는 특성 분석 now.---

나는 이미 읽어의 소스 코드 및 노력의 수를 계산하는 특성이 있습니다.저는 결정했을 수정할 수 있는 코드를 구문 분석수로 자신의 유형이 다음 사용 Activator.CreateInstance() 용 구문 분석된 인수입니다.활성을 알아낼 수 있는 생성자를 사용합니다 인스턴스의 특성을 클래스를 사용할 수 있습니다.

나는 이미 알고있는 어떤 종류에서 사용할 수 있는 특성의 생성자,그래서 내가 쓴 작은 방법이 구문 분석하는 물건을 사런스 정보를 알아야합으로 올바른 형식(string,int,guid 등)을 통과하는 개체 배열을 활성화.

의 활성화 노력을 찾는 올바른 생성자 및 나에게 다시 인스턴스의 특성을 클래스입니다.

다른 팁

처럼 보인할 수 있는 클래스를 검사 파일이거나,또는 주석을 추가 생성자를 만드는 것이 구문 분석 작업이 간단합니다.측면을 지향적 기법을 도울 수 있--캡처 할 때마다 생성자가 호출되며,그것은에 항목을 추가합니다.

사용할 수 있습니다 CSharpCodeProvider 니다.가 Microsoft 지원 문서 을 설명하는 과정입니다.

를 호출하는 컴파일러 옵션이 될 수 있습니까?할 수 있는 원본 파일을 자신을 사용하여 반영하는 걸어의 특성,또는 당신을 만들 수 있다 더 소스 파일에 당신은 마크와 그 특성이 있습니다.방법 중 하나,그것은 컴파일할 수 있습에 반영에 액세스하는 특성의 속성입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top