여러 열 (예 : 관계형 데이터베이스)으로 구성된 테이블에 일부 값을 저장해야한다고 가정합니다 (예 : 첫 번째 열은 int
, 두 번째 열은 string
, 세 번째 열은 DateTime
등).테이블을 구현하려면 어떻게해야합니까?
하나 이상의 열이 기본 키와 같은 경우 이 기본 키 역할을하는 필드 집합이 될 IDictionary
을 사용할 수 있습니다. 나머지 필드는 Value
을 나타냅니다. 이 경우 하나 또는 두 개의 클래스/구조를 만들 수 있습니다. 기본 키는 단순히 기존의 유형입니다 예를 들어, 우리는 다음과 같이 클래스/구조체를 만들어야합니다 : 테이블이 다음이 될 수있는 동안
public class MyValue
{
public int Field1;
public double Field2;
public string Field3;
}
사전은 Dictionary<int, MyValue>
수 있습니다.
public class MyTable
{
private Dictionary<int, MyValue> _table;
...
}
물론, 어플리케이션 도메인에 따라 상기 필드에 대한 범위 및/또는 유효 규칙이있을 수있다 : 예를 들어, Field1
긍정적으로 가질 수 있고, 등등 ...
로서 첫 번째 대안은 MyValue
클래스를 디자인하여 "규칙 위반"을 식별하기 위해 몇 가지 예외를 throw 할 수 있습니다. 그러나 아마도이 접근법은 과도 할 수도 있습니다. 특히 MyValue
클래스가 내부적으로 MyTable
에 사용되는 경우이 경우에는 다음과 같은 코드를 작성하고 유효 기간 오류 MyTable
클래스를 처리합니다. 즉, MyTable
클래스는 데이터 필드를 삽입하기 전에 검사합니다. 사전에, 그래서 MyValue
은 "바보"클래스 ...
namespace MyNamespace
{
class MyValue
{
// only public fields
}
public class MyTable
{
private Dictionary<int, MyValue> _table;
...
public void Add(int key, int field1, double field2, string field3)
{
// some code to check validity range for fields
...
}
}
}
이 솔루션은 정확 것입니까? 아니면이 접근법을 피해야합니까? 난 항상 예외, GetHashCode
방법을 Equals
처리 (완전한 방식으로 클래스/구조체를 정의해야 하는가?
이것은 너무 광범위하여 어디서부터 시작해야할지 모릅니다. – cadrell0
예, 유효한 해결책입니다. –
.NET에 대한 몇 가지 디자인 지침 (이 질문과 관련된)에 대한 링크가 있습니까? – enzom83