문제
이 내보내기 파일 (이 산업의 표준) 형식의 내보내기 파일이 있으며 데이터베이스로 가져와야합니다. 파일은 기본적으로 다음과 같습니다.
DATRKAKT-START
KAKT_LKZ "D"
KAKT_DAT_STAMM "1042665"
DATRKAIB-START
KAIB_AZ "18831025"
KAIB_STATUS_FM 2
KAIB_KZ_WAE "E"
DATRKAIB-END
DATRKARP-START
KARP_MELD "831025"
KARP_ST_MELD "G"
DATRKARP-END
...
DATRKAKT-END
총 1963 개의 다른 행을 가진 56 개의 섹션이 있으므로 1963 년의 속성을 가진 56 개의 클래스를 만들지 않습니다 ...이 파일을 어떻게 처리하여 객체와 같은 속성에 액세스 할 수 있습니까?
Datrkaib.Kaib_Status_Fm
Datrkarp.karp_St_Meld
해결책
프로그래밍 언어를 사용하면 런타임에 클래스에 메소드를 추가하거나 클래스가 정의되지 않은 메소드에 대한 통화에 응답 할 수 없다면이를 수행 할 수있는 방법이 없습니다. C#이 당신이 이것을하도록하더라도, 당신은 어쨌든 유형의 안전과 지능적인 도움을 잃을 것입니다 (아마도 그것이 그렇게 작동하기를 원하는 이유 중 하나). 왜냐하면 그냥 계속해서 일부 데이터 구조로 읽지 않겠습니까? 내 성향은 값이나 다른 해시를 포함 할 수있는 해시가 될 것이므로 (vb)와 같은 전화를 받게됩니다.
Datrkakt("Lkz")
Datrkakt("Dat_Stam")
Datrkakt("Kaib")("Az")
Datrkakt("Kaib")("Status_Fm")
또는 모든 데이터 항목이 예제에서와 같이 고유하게 이름을 지정한다는 것을 알고 있다면 하나의 해시를 사용하십시오.
Datr("Kakt_Lkz")
Datr("Kakt_Dat_Stam")
Datr("Kaib_Az")
Datr("Kaib_Status_Fm")
모든 데이터 항목 이름의 열거를 작성하고
Datr(DatrItem.KAKT_LKZ)
Datr(DatrIrem.KAIB_STATUS_FM)
다른 팁
구조화 된 데이터처럼 보입니다. 검색을 실행하고 교체하고 간단한 XML로 변환합니다. 그런 다음 가져옵니다.
코드 파일을 생성하려는 경우 - 고려하십시오. 코드 스미스 - 나는 이것이 할 수 있다고 생각합니다.
나는 목록과 함께 갈 것이다 <name, list>
다양한 물체의 경우 튜플이 될 수 있습니다 <name, value>
또는 객체의 명명 된 목록.
자동 으로이 작업을 수행하지 않습니다.
모든 적절한 속성 (예 : datrdocument)을 포함하는 클래스를 만들고 datrReader 클래스 (XMLDocument/XMLREADER 클래스와 유사한 아이디어)를 만듭니다.
DatrReader는 파일 또는 스트림의 내용을 읽고 DatRDocument로 구문 분석해야합니다.
DatrDocument를 사용하여 스트림에 작성하는 Datrwriter 클래스를 작성할 수도 있습니다.