2010-05-04 4 views
1

임의의 텍스트 파일을 C# 프로그램에 그려 내고 임의의 익명 형식의 개체 또는 일종의 복합 사전을 만들려면 현명한 방법이 필요합니다.임의의 텍스트 파일에서 익명 형식 개체 만들기

adapter 1: LPe11002 
    Factory IEEE: 10000000 C97A83FC 
    Non-Volatile WWPN: 10000000 C93D6A8A , WWNN: 20000000 C93D6A8A 
adapter 2: LPe11002 
    Factory IEEE: 10000000 C97A83FD 
    Non-Volatile WWPN: 10000000 C93D6A8B , WWNN: 20000000 C93D6A8B 

을 익명 형식 개체 또는 이와 유사한 구조로이 정보를 얻을 수있는 방법이 있나요 :

나는 다음과 같습니다 대표 텍스트 파일이?

가 손으로 C#으로 구성되어 있다면, 다음과 같이 보일 수있는 마지막 익명의 유형 : 텍스트 파일의 내용을 임의대로

new 
{ 
    adapter1 = new 
    { 
     FactoryIEEE = "10000000 C97A83FC", 
     Non-VolatileWWPN = "10000000 C93D6A8A", 
     WWNN = "20000000 C93D6A8A" 
    } 
    adapter2 = new 
    { 
     FactoryIEEE = "10000000 C97A83FD", 
     Non-VolatileWWPN = "10000000 C93D6A8B", 
     WWNN = "20000000 C93D6A8B" 
    } 
} 

(즉, 키 아무것도를 수) 있음 , 특수 솔루션 (예 : "FactoryIEEE"와 같은 이름을 찾는)은 작동하지 않습니다. 그러나 파일의 구조는 항상 동일합니다 (예 : 그룹, 콜론 및 쉼표를 구분 기호로 들여 쓰기 등).

어쩌면 나는이 잘못된 방향으로 가고 싶습니다. 그리고 더 좋은 생각이 있습니까?

+0

왜 익명 유형을 사용 하시겠습니까? 동적 유형이 아닌 이유는 무엇입니까? – Gabe

+0

동적 유형을 생각하지 않았습니다. 유감스럽게도 Mono가 대상 플랫폼이므로 동적 타이핑을 사용할 수 없습니다. –

답변

4

잘못된 길로 가고 있습니다. 귀하의 "익명의 유형 객체"데이터는 구조가 어렵고이며 을 사용하기가 어렵습니다.을 사용하십시오. 그것을 구성하기 위해서는 반사적 인 속임수를 사용해야합니다. 그리고 무엇을 위해서?

PrintReport 기능을 고려하십시오. 이 함수는 ATO 사용으로 인해 더 간단하게되지는 않습니다. 멀리 떨어져서, 키를 반복하기 위해 리플렉션 자체를 사용하는 대신 더 복잡하고 느려질 것입니다. 당신의 해결책 은 가능한 작은 키의 고정 된 숫자가 있다면 의미가 있습니다. 그런 다음 "obj.FactoryIEEE"와 같은 사용법 구문이 선호되었을 수 있습니다.

나는 이것에 대해 갈 것 방법은 List<Dictionary<string, string>>와 함께, 또는 AdapterRecord도 C#에서이 작업을 수행 할 수있는 방법이 없습니다처럼 보이는

class AdapterRecord 
{ 
    public string Name { get; set; } 
    public Dictionary<string, string> Parameters { get; set; } 
} 
2

이다하는 List<AdapterRecord> 말 4

게다가, 키가 무엇인지 알지 못한다면 그것에 대해 생각해 보면 강력하게 형식화 된 액세스가 어렵고 사전/목록/등으로 간단한 분할 + 삽입이 어려울 것입니다. 더 의미가 있습니다.

+1

그래, C# 동적 타이핑으로 할 수있다. – Strelok

+0

슬프게도 strelokstrelok가 정확합니다. – kervin

+0

나는 체크했다. ExpandoObject를 인덱스를 통해 액세스 할 수 없으므로 실행 시간까지 변수 이름을 알지 못하는 객체에 프로그래밍 방식으로 값을 설정할 방법이 없습니다. – RCIX

4

2 부작을 확인하십시오. XML 파일을 유창하게 구문 분석합니다. 그것은 내가 생각하는 텍스트 파일을 구문 분석 할 수 있습니다.

  • Fluent XML Parsing Using C#'s Dynamic Type Part 1
  • Fluent XML Parsing Using C#'s Dynamic Type Part 2
    • 그것은 당신이 원하는 것을 할 C#을 4 동적 입력을 사용합니다.

    +0

    +1, 기술적으로는 정확하지만 결코이 문제에 부딪치지 않기 바랍니다. – kervin

    +0

    아주 좋습니다. 나는 결국 이런 것을 사용할 것이라고 확신한다. –

    +0

    죄송합니다, C# 4.0은 사용할 수있는 옵션이 아닙니다. –

    1

    내가 그들을 사랑하지는 않지만 아마도 DataTable이 제공 될 것입니다 ...

    +0

    그런 생각을하지 못했습니다. –