2017-02-01 7 views
2

Mono.Cecil을 사용하여 다양한 필드와 메서드를 다양한 유형으로 추가하고 있으며 기존 멤버와의 충돌을 피하기 위해 멤버 이름을 어떻게 지정해야하는지 궁금합니다. 추가 할 각 멤버에 대해 문자열 비교를 수행하기 위해 모든 필드, 메서드 및 속성을 검토해야합니까, 아니면 Cecil에서 자동으로 자유 멤버 이름을 선택하게 할 수 있습니까?Mono.Cecil이 신입 회원을 어떻게 추가해야합니까?

답변

3

디버깅을 위해 (예 : 스택 추적에 이러한 이름이 나타날 수있는 경우) 의미있는 이름을 사용하는 것이 좋습니다. 그러나 기존 멤버와의 충돌을 피하기 위해 C# 식별자에서 허용되지 않는 문자를 사용할 수 있습니다. 예를 들어 필드 이름을 <YourLibraryName>_MeaningfulFieldNameHere과 같이 지정할 수 있습니다. C# 컴파일러 자체가 컴파일러에서 생성 한 멤버 (예 : 속성의 배킹 필드)에 대해 수행하는 작업입니다.

+0

의미있는 이름은 훌륭하지만 다른 누군가가 어셈블리에서 내 수정자를 실행하여 소스가 없으므로 어셈블리가 손상되었을 경우 꽤 큰 재앙이됩니다. 잘못된 문자를 사용하는 것이 탁월한 솔루션입니다. 100 % 어리석은 증거는 아니지만 어쨌든 필드를 사용하는 메소드를 수정할 때 버그를 만들 가능성이 더 큽니다. – SilentSin

+0

충돌 가능성을 줄이기 위해 고유 한 접두사 (YourLibraryName)를 사용하는 것이 좋습니다. – Evk