2012-08-27 6 views
1

나는 실행중인 다른 테스트 그룹의 결과를 추적하여이 테스트를 저장할 수있는 데이터 구조를 작성하려고합니다. 테스트는 모두 다수의 흔적으로 구성되어 있지만 저장하고 나중에 사용하려는 정보 중 일부는 다른 테스트마다 다릅니다.사전에 임의의 유형의 임의의 수의 배열을 저장하는 방법

Trial(int) WasResponseCorrect(bool) WhichButtonWasPressed(string) SimulusLevel(double) 

    1     false       "Up"       3.5 
    2     true       "Left"      6.5 

를 TestB이 결과 필드의 다른 유형이있을 수 있습니다 경우 : 같은 예를 들어, 종피 결과를 보일 수 있습니다

Trial(int) WasResponseCorrect(bool) ColorPresented(string) LetterPresented(char)  LetterGuessed(Char) 
    1      false      green      G      C 

    2      false      blue      H      F 

내가 (키와 같은 필드 이름 사전을 만드는 생각했다 예 : WasResponseCorrect) 및 필드 값의 배열을 dic의 값으로 지정합니다. 나는 그것을하는 방법을 이해할 수 없다. 어쩌면 정보를 저장하는 더 좋은 방법이 있을지 모르지만 어떻게해야하는지 생각할 수는 없습니다. 나는 .net (VB 및 C#)과 함께 작업하고 있지만 다른 언어로 된 예제를 알고 있다면 대부분의 코드를 이해하고 변환 할 수 있다고 생각합니다. 감사!

+1

정보를'DataTable'에 저장하십시오. 그것은 컴파일 타임에 알 수없는 타입의 컬럼을 각각 가지고있는 데이터 행을 저장하기 위해 디자인되었습니다. – Servy

+0

무언가 또는'Dictionaty '이 빠진 것은 분명한 대답입니까? – devundef

+0

정확히 내가 찾고있는 것입니다! 감사. 답변을 게시하면 동의 할 수 있습니다. –

답변

4

요구 사항에 대해 더 많이 알지 못하면 (예 : 데이터를 저장하는 방법), 원하는대로 다형성이있는 것처럼 보입니다. 즉, 수퍼 클래스 (Trial)와 특정 시험 유형을 나타내는 하위 클래스가 있습니다. 예를 들어 :

public class Trial { 
    public int Id { get; set; } 
    public bool WasResponseCorrect { get; set; } // if this is in every type of trial 
    // anything else that is common to ALL trial types 
} 

public class TrialA : Trial { 
    public string WhichButtonWasPressed { get; set; } 
    public double SimulusLevel { get; set; } 
} 

public class TrialB : Trial { 
    public string ColorPresented { get; set; } 
    public char LetterPresented { get; set; } 
    public char LetterGuessed { get; set; } 
} 

그런 식으로 당신은 Trial 개체의 목록을 가질 수 있지만 해당 개체의 실제 실행시의 형태는 TrialA 또는 TrialB 될 수 있습니다.

+1

프로그램을 컴파일 할 때 모든 필드 및 유형의 필드와 함께 모든 평가판 유형을 알고있는 경우에만 작동한다는 점에 유의해야합니다. – Servy

+0

매우 사실입니다, Servy. –

관련 문제