2009-11-24 4 views
2

xsd.exe 도구를 사용하여 XML 스키마에서 생성 된 클래스를 사용하고 있습니다. 현재 거대한 (32k 라인) .cs 파일을 생성합니다. 그런 다음 XMLSerializer를 사용하여 모델의 일부를 직렬화 및 비 직렬화합니다. 이러한 클래스에서 속성을 재정의해야하므로 일부 생성 된 메서드를 재정의하는 부분 클래스가 별도의 파일에 있습니다. 그러나 이것은 스키마가 바뀔 때마다 가상으로 수백 가지의 메소드를 표시하고 마킹하는 것을 의미합니다. xsd.exe 도구를 생성 할 때 메소드를 가상으로 표시 할 수있는 방법이 있습니까?xsd.exe를 사용하여 가상 메서드 만들기

+0

당신은 프로그래머입니다. 왜 그걸 할 빠른 응용 프로그램을 작성하지 않으십니까? –

+1

@ Ed : 분명히 솔루션을 해킹하기 위해 키보드로 뛰어 가기 전에 의견과 기존 솔루션을 요구하면 정신 건강 상태가 좋을 것 같습니다. –

+0

내가 이것을 할 수있는 좀 더 정교한 도구가 있는지 물어볼 수 있었다고 생각합니다. 지금은 Ctrl-h입니다. – MattMcKnight

답변

2

XSD.exe의 출력 내용은 사용자 지정할 수 없습니다.

이전에 비슷한 문제가 있었으며 XSD.exe에서 생성 된 출력을 수정 한 간단한 콘솔 응용 프로그램을 만들었습니다.

+0

좋은 점 - 빠른 속도는 아니지만 약간의 "take it or leave it"접근 방식 :-) –

+0

사실, XSD.exe는 IMO의 블랙 박스 도구입니다. 내 경우에 필요한 것의 99 %를 수행하고 마지막 1 %를 얻기 위해 해킹하여 조금 더러운 느낌이 들지 않는 도구 :) – HakonB

+0

과거에는 배치 파일을 통해이 작업을 수행했습니다. C# 응용 프로그램을 작성하는 것만 큼 빨라지지는 않았지만 전자는 명령 줄 매개 변수를 제공하고 출처를 내 원본 폴더로 옮기는 데 필요한 배치 파일을 이미 가지고있을 때 특히 한 두 가지 일을 복잡하게하는 IMO 과도한 작업이었습니다. –

0

나는 당신이 직렬화 코드를 수정해야한다는 것이 이상한 것처럼 보입니다. 속성을 재정의해야하는 경우 기존 속성을 감싸는 새로운 속성을 만들지 만 새로운 동작을 추가 할 수는 없습니까? 또는 나는 그 요점을 놓쳤다.

+0

물론, 어떤 경우에는 있습니다. 스키마의 크기와 레거시 코드베이스를 감안할 때 모든 코드가 끝나기까지는 다소 시간이 걸릴 것입니다. – MattMcKnight

0

계속 진행해야하는 경우 코드 생성을 조사해야합니다. XSD 생성 유형을 작성한 다음 해당 유형을로드하는 애플리케이션을 작성하고 Reflection을 사용하여 모든 특성이 가상 인 경우를 제외하고는 동일한 유형을 생성하십시오. 그런 다음 새 유형에서 파생되고 필요에 따라 특성을 대체 할 수 있습니다.

이것은 빌드 프로세스의 일부가 될 수 있습니다.