문제

주어진 방법과 관련된 속성을 검사하기 위해 Cecil을 사용하려고합니다. 그것을 찾는 것 같지만 다음 코드를 사용하여 이름을 얻을 수는 없습니다.

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()

DLL에서 제거 할 때 두 번째 코드 줄이 NULL로 표시되기 때문에 이것이 내 함수를 설정 한 속성이어야합니다. 내가하고 싶은 것은 속성의 이름을 얻을 수 있다는 것입니다. 현재 두 번째 코드 줄은 "mono.cecil.customattribute"만 반환합니다. 속성 이름 (클래스 유형) 이름을 얻는 방법이 있어야한다고 생각합니다.

감사!

도움이 되었습니까?

해결책

글을 쓸 때 이것에 어려움이있었습니다 모마 또한. 다음은 사용하는 코드입니다.

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].Constructor.DeclaringType.ToString()

다른 팁

CustomAttribute a의 인스턴스입니다 System.Attribute 파생 된 유형 ToString() 저자가 결정한 모든 일을 할 것입니다.

속성 유형에 대해 알고 싶다면 유형을 요청해야합니다.

typeInfo.GetCustomAttributes(false)[0].GetType().ToString() ;

나는이 속성을 보지 못했습니다 CustomAttributes 당신은 사용 중이므로 오히려 메소드를 사용했습니다. MemberInfo.GetCustomAttributes(bool) 나는 항상 사용합니다.

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