2009-02-02 9 views
0

내 프로그램이 Wiki 구문의 데이터 테이블을 나타내는 문자 스트링을 항상 전달한다고 가정 해 보겠습니다. 뭔가 같은 :이 문자열 데이터에 어떤 유형의 OO 데이터 구조를 사용해야합니까?

{||Client:||ABC|-|Contact:||Joe Smith|-|Current revision:||1.0||} 

내가 구문 분석하는 방법을 알고 내 특정 위키 테이블 오브젝트의 각 하나 (예를 들어, ClientContactTable, CustomerOrderTable 등)을하지 않으 | - 및}. 그래서 각 특정 Wiki 테이블 객체의 생성자에 전달할 수있는 "중간"계층 데이터 객체로 문자열을 구문 분석하는 코드 1 덩어리를 작성하고 싶습니다.

내 질문 : 중간 계층 개체는 무엇이되어야합니까?

+0

위의 내용은 http://stackoverflow.com/questions/504780/how-type-of-oo-data-structure-should-i-use-for-this-string-data – gregmac

+0

이후로 계속 열어 두시기 바랍니다. 대답이 있고 다른 하나는 대답이 없습니다. –

답변

3

당신은 일반적인 WikiTable 직렬화 포맷터를 만들 System.Runtime.IFormatter을 구현하고자합니다. 이를 돕기 위해 System.Runtime.Formatter 기본 클래스에서 상속 할 수 있습니다.

Stream msg = GetWikiClientContactTableMessage(); 
WikiTableFormatter wtf = new WikiTableFormatter(); // nice name ;) 
ClientContactTable result = (ClientContactTable)wtf.Deserialize(msg); 

또한,이 코드는 아마 당신이 더 XmlSerializer가처럼하는 경우에 작성하는 좀 더 쉽게 될 것입니다 및 발신자 패스를 만들 : 당신이 그 일을하면

,이처럼 사용합니다 생성자에 예상되는 출력 유형 그런 다음 리플렉션을 사용하여 필요한 경우 예상되는 속성을 가져올 수 있습니다.

+0

변수 이름으로 wtf에도 +1. 니스 조엘 :) –

0

문자열을 사용하여지도에서지도로 이동합니다.

특히 OO는 아니지만 내가 알지 못하는 직업에 대한 것이 아니라면 그 일을 할 것입니다.

0

사전 또는 해시 테이블을 사용합니다.

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

이 경우에는 MSDN 워드 프로세서 (항상 나를 위해이었다) 읽기 어려운, 나는 빠른 개요를 제공합니다. 기본적으로 사전은 객체 (문자열?)를 키로 사용하고 다른 객체는 데이터로 사용합니다.

Dictionary<string,string> d = new Dictionary<string,string>(); 
d["key1"] = "value"; 
d["anotherkey"] = "anothervalue"; 
0

다른 사람들도 말했듯이, 첫 번째 이름을 키로 사용하려면 연관 맵 (string-> string)을 사용하십시오. 그것은 가장 깨끗한 방법이어야합니다. 이는 파싱 코드가 각 객체 클래스에 대해 중복 될 수있는 많은 입력 검사 및 오류 처리를 포함 할 수 있음을 의미합니다.

같은 이름의 여러 항목을 반드시 포함해야하는 경우 (동일한 클라이언트의 경우 여러 연락처의 경우처럼) 반드시 (문자열, 문자열) 쌍의 목록으로 폴백 할 수 있습니다.

관련 문제