이 질문은 간단하게하기 위해 생략 한 큰 문제를 파악하려고 할 때 발생했습니다.속성에서 문자열 길이 제한
저는 C#에서 특정 데이터 구조를 나타내야합니다. 이 프로토콜은 외부 시스템과 통신하는 데 사용됩니다. 따라서 미리 정의 된 길이와 정수 (또는 더 복잡한 데이터)가있는 문자열 시퀀스가 있습니다. 이제 가정 해 봅시다 : 자,이를 표현하는 나의 선호하는 방법은
class Message
{
string System {get; set; }; // four characters only!
string Application {get; set; }; // eight chars
int Id {get; set; };
}
문제가 있으므로, 문자열을 사용하는 것입니다
SYSTEM : four chars
APPLICATION : eight chars
ID : four-byte integer
: 나는 미리 정의 된 길이보다 더하지 않는 문자열을 확인해야합니다. 게다가,이 헤더는 실제로 필드의 10 분의 1을 가질 것이고, 그것들은 때때로 바뀔 것입니다 (우리는 여전히 메시지 레이아웃을 결정하고 있습니다).
이러한 구조를 설명하는 가장 좋은 방법은 무엇입니까? 예를 들어 XML을 데이터 설명과 함께 사용하여 리플렉션을 사용하여 구현을 준수하는 클래스를 만들려고 생각했습니다 (프로그래밍 방식으로 액세스해야하기 때문에).
그리고 말했듯이, 더 많은 문제가 있습니다. 문자/숫자의 수를 제한하는 다른 유형의 데이터 유형이 있습니다 ...
+1이 세 단락은이 질문에 대한 내 생각을 설명합니다. 그래서 나는 정말로 겁에 질리게됩니다. –
Michael, KISS를 준수하기 때문에 좋은 답변입니다. 그러나 XML을 사용하려는 나의 희망은 non-C# -programmers가 데이터의 설명을 변경할 수있게하는 것입니다. 나는 관련된 노력 때문에 수업을 변경하려는 생각을 싫어합니다. 하지만 어쩌면 나는 게으르다. 단순함을 위해 +1. –
@Bruno : 나는 당신의 구체적인 시나리오에 대해 충분히 알지 못한다. 그렇다고해서 그 일을하게하는 데는 어떤 시점이 있는지 알지 못하지만이 클래스의 정의를 바꾸는 것만으로는 충분하지 않다는 것을 기억하라. 어쨌든이 새로운 필드와 변경된 필드를 처리하는 코드가 필요할 것입니다.이 클래스에 물건을로드하고 저장하는 방법을 알아야합니다. 또한 이것이 외부 시스템과 통신하기위한 프로토콜의 추상화라고 말했기 때문에이 시스템은 변경 사항을 처리하는 방법을 어떻게 알 수 있습니까? –