XLS 또는 CSV 파일과 같은 입력 파일을 시스템의 개체에 매핑하는 가장 좋은 방법을 찾아 내려고했습니다. 조금 더 넓혀 보겠습니다. 나는 다음과 같은 개체가 :입력 파일을 동적으로 매핑하는 C# 접근 방식
주소 전화 번호 이메일 이
이내가 얻을 수있는 입력 파일이 가끔, 변화 등 :
회사 연락
각과 같은 변수 변수를 열 머리말 일 때가 있고 때로는 열 배열과 숫자가 때때로 변경됩니다. 다음과 같이가 볼 수 있었다 "회사"는 "addres1"및 기업 부설 "PHONE1"가됩니다
COMPANY - CONTACT - ADDRESS - PHONE
----------------------------------------------------------------------
company1 contact1 address1 phone1
company1 contact2 address2
company2 contact3 phone2
contact4 address3
위의 쇼는 "contact1는"자신의 목적이지만, 같은 "company1"가 그 부모 개체.
"연락처 2"(전화 제외)도 마찬가지입니다.
"contact4"에는 부모 개체가 없으므로 "address3"은 회사가 아니라 연락처에 속합니다.
내 생각은 지금까지 다음과 같은 목적을 가지고 다음과 같습니다.
매핑 - (내가 그것을 구현하는 방법을 잘 모르겠습니다 곳이다 그것은 열을 변수에 매핑하는 방법을 말해야한다, 소유권/계층 구조 - 예를 들어, 회사 주소)
IMappingLoader있다 - (로드 매핑 개체를)
- XmlMappingLoader
- DbMappingLoader
IDataLoader은 -
XLSLoader - - CSVLoader
그래서 매핑을로드 할 것, 데이터 집합에로드 된 데이터와 올바른 개체를 반환는 (데이터 집합에 데이터를로드합니다).
내가 접근하는 가장 좋은 방법은 매핑 부분을 수행하는 방법입니다. 어떤 열이 어떤 객체에 속해야 하는지를 말할 수있는 방법.
모든 조언을 주셔서 감사합니다.
존
안녕하세요 제임스,이 부분이 제가 만족하며 매우 비슷한 것을 구현했습니다. 나는 내가 간접적으로 그것을 복잡하게하려고 노력하고 있었다라고 생각한다. 비즈니스가 열과 매핑을 자동으로 설정하여 새로운 데이터를 동적으로로드 할 수 있도록하고 싶습니다. 그러나 비즈니스 로직은 변경 될 수 있고 변경되어서는 안되기 때문에 올바른 해결책을 제시해 줄 수있는 좋은 길을 찾았습니다. 감사합니다 :) – Jon
@ 존, 도와 드리겠습니다. 동적 인 정보를 분석하는 것은 항상 어렵지만, 필자의 시스템은 파싱 할 데이터에 대해 최소한 * 뭔가를 알아야 할 필요가 있다고 말합니다. 그렇지 않으면 매핑하는 것이 불가능합니다. 물론 순전히 데이터가 저장되는 순서대로 내려지지 않는 한, 리플렉션을 사용하거나 클래스를 업데이트하여 인덱스 된 속성을 지원할 수도 있습니다. 내 대답을 업데이트하여 내 뜻을 알려줄 것입니다. – James
@ 존, 내 업데이트 된 답변을 참조하십시오. 이제 인덱스 된 속성 기반 클래스가 포함됩니다. 기본적으로 원하는만큼의 속성을 가질 수 있으며 정보의 순서에 따라 항상 채워집니다. Record 클래스를 쉽게 업데이트하여 크기가 아닌 머리글 목록을 가져온 다음 머리글을 기반으로 정보를 가져올 수 있습니다. 그러나 가능한 한 제네릭을 사용하려면 색인을 붙이십시오. – James