2013-04-24 4 views
1

안녕하세요, 저는 C#을 사용하여 Windows 8 App에 일반 CSV 파서를 만들려고합니다.CSV 값에서 클래스 개체를 인스턴스화하는 방법?

T obj = ParserCSV<T>(CSVString); 

은 현재 내가 MSDN 링크를 거기에 샘플을 얻을 수 있어요 : 나는 유형 T 및 문자열 CSV를 통과하는 파서를 작성하고 내가 객체가이 같은 것을 채워해야 오브젝트 할 그의 경우 http://code.msdn.microsoft.com/CSV-Parser-for-WinRT-42e0f4d0

여기에서는 csv 문자열을 구문 분석하고 키 값 쌍의 모음을 가져옵니다. 그런 다음 객체로 변환하려면 특정 키를 찾아 객체에 매핑해야합니다.

어떻게하면됩니까?

+0

CSV 값이 문자열 유형이라고 가정 할 수 있습니다. CSV 값 자체를 인코딩하지 않고 원하는 유형별로 다르게 파싱하지 않는 한 원하는 것은 불가능합니다. XML을 사용하십시오. – MoonKnight

+0

속성 이름을 키 이름과 매핑 할 수 있습니까? –

+0

나는 당신이 지금 말하고있는 것을 보았습니다, 미안 해요. 예, 할 수 있습니다. 잠깐만 기다려 봐. 도와 줘. – MoonKnight

답변

0

Activator.CreateInstance 메서드를 살펴보십시오. 지정된 매개 변수와 가장 일치하는 생성자를 사용하여 지정된 유형의 인스턴스를 만듭니다.

ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person"); 
Person p = (Person) handle.Unwrap(); 
p.Name = "Samuel"; 
Console.WriteLine(p); 

: 그것의 예는 귀하의 경우 사용하면 당신은 다음과 같은 것을 사용하여 객체 인스턴스를 만들 수

public class Person 
{ 
    private string _name; 
    public Person() { } 
    public Person(string name) 
    { 
     this._name = name; 
    } 
    public string Name 
    { 
     get { return this._name; } 
     set { this._name = value; } 
    } 
} 

다음과 같은 클래스가 있다면 그래서

Activator.CreateInstance("myAssemblyName", "myType") 

것입니다 "사무엘"이 인쇄됩니다. 귀하의 경우 각각 KeyValuePair에 대해 위의 방법을 사용하여 관련 객체를 인스턴스화 할 수 있습니다.

이 정보가 도움이되기를 바랍니다.


편집. 추가 질문에 답변하십시오.

Dictionary<String, String> someDict = new Dictionary<String, String>(); 
someDict = GetDictOfKvpFromCsv(); // Get the dictionary from your CSV. 
foreach (KeyValuePair<String, String> kvp in someDict) 
{ 
    ObjectHandle handle = Activator.CreateInstance(kvp.Key, kvp.Value); 
    ISomeType t = (ISomeType)handle.Unwrap(); 
    // Do other stuff... 
} 
+0

정말 고마워. 하지만 속성 이름을 가져 와서 KeyValue 쌍에 문자열로 전달하고 그 값을 얻을 수 있습니까? –

+0

예. 그러나이 '주요 가치 쌍'이 무엇인지 알지 못했습니다. 이것은 'KeyValuePair '입니까? 아니면 무엇입니까? 도움이 되었다면 upvote를 기억하고 답변 일 경우 답변으로 표시하십시오 ... – MoonKnight

+0

예 KeyValuePair 쌍. –

관련 문제