2012-01-17 3 views
0

저는 작은 단위 변환 라이브러리를 만들려고합니다. 내가 XML의 모든 단위와 변환 값이 컴파일시에,Xml을 컴파일시 열거 형

<unit name="m"> 
    <multiply>1</multiply> 
</unit> 
<unit name="mm"> 
    <multiply>1E-3</multiply> 
</unit> 

을 제기하고있다, 나는 다른 프로젝트

public enum Units{m, mm, ...}; 
를 사용하는 그들을 열거에 (아마도 잘못된 단어)로 변환하고 싶습니다

가능합니까? 같은 것을 성취 할 수있는 더 좋은 방법이 있습니까?

+2

t4 또는 다른 빌드 도구와 같은 소리는 ... –

+0

컴파일 타임에는 열거 형을 얻지 못합니다. 기껏해야 MSIL 어셈블리 나 최악의 컴파일 타임 오류 메시지를받습니다. XML에서 C# 코드를 작성하려고합니까? –

+0

첫 번째 단계는 정상적인 C# 메서드를 사용하여 코드가 포함 된 문자열을 생성 한 다음 T4 템플릿으로 변환 한 후 너무 힘들지 않아야합니다. –

답변

1

단위 수가 비교적 적기 때문에 일반 C# 코드는이 특별한 경우에 더 나을 수 있습니다. IntelliSence를 사용하여 값을 편집하고 유형이 엉망인 경우 컴파일 시간 오류를 지울 수 있습니다. 변환의 여러 레이어 (XML -> CS -> 내부 구조)를 디버깅하는 것은 흥미롭고 유용한 통찰력을 제공합니다. 그러나이 프로젝트가 오락/학습만을위한 것이 아니라면 매우 생산적이지 않습니다. 또 다른 이점은 다른 사람이 코드를 더 쉽게 이해할 수있는 능력입니다.

기본 단위와 비선형적인 차이가있는 단위는 XML이 불필요하게 복잡해 보이므로 일회용 XML 데이터를 구현하는 것이 훨씬 재미 있습니다.

+0

흥미 롭습니다. 나는 단위 변환 라이브러리를 만드는 방법을 찾았고, 그들은 모두 xml 파일을 어떤 방식 으로든 사용하는 것처럼 보였다. (예 : [here] (http://www.codeproject.com/Articles/12520/Thunder-Measurement-Unit-Conversion -뼈대)). 대체 방법을 제공 할 수 있습니까? 나는 또한 [여기] (http://stackoverflow.com/questions/8902428/type-parameter-constraints-no-generics-or-nearest-offer)를 보는 당신의 이전 코멘트를 알아 차렸다. – john

2

T4 템플릿을 살펴보십시오. Visual Studio에서 텍스트 파일 (* .cs, * .txt, * .html, * .xml, * .vb 등)을 자동으로 만듭니다. 이러한 템플릿을 사용하면 XML 파일을 읽고 열거 형을 포함하는 * .cs 파일을 생성합니다.

MSDN의 Code Generation and T4 Text Templates을 참조하십시오.

+0

이 문제의 해결책은 +1 –