2010-08-11 3 views
1

저는 USB를 통해 장치와 통신하는 C# .NET으로 작성된 소프트웨어를 가지고 있습니다. 문제가 발생하면 장치는 내 소프트웨어에서 정수 형식으로 읽은 오류 코드를 설정합니다. 특정 펌웨어 오류 코드와 상관 관계가있는 C# 프로그램에 오류 메시지를 저장하려고합니다. 이것들을 저장하는 가장 좋은 방법은 무엇입니까?C#의 오류 코드와 오류 메시지를 연결하는 가장 좋은 방법은 무엇입니까?

나는 리소스 파일을 사용하는 것이 좋은 방법이라고 들었다. 리소스 파일을 사용할 때의 이점은 무엇입니까? 그것을 할 수있는 더 좋은 방법이 있습니까?

답변

8

리소스 파일을 사용하는 것이 좋습니다. 한 가지 주요 이점은 현지화 (다른 언어 사용)입니다. 현재 여러 언어를 사용하지 않으려는 경우에도 나중에 추가 할 수있는 유연성을 제공합니다. 또 다른 이점은 간단한 .NET/C# 통합입니다.

var key = "134"; //error code 
var resourceFile = "someFileName.resx"; 
var filePath = "c:\some\path\"; 
ResourceManager resourceManager = ResourceManager 
    .CreateFileBasedResourceManager(resourceFile, filePath, null); 
resourceValue = resourceManager.GetString(key); 

또한 리소스 파일은 메시지를 변경해야 할 때 쉽게 접근 할 수 있습니다.

+0

+1 응용 프로그램을 현지화 할 계획이라면 리소스 파일은 다른 언어와 관련된 오류를 빠르게 교체하는 좋은 방법입니다. –

2

답변은 필요에 따라 다릅니다. 특정 오류 메시지를 업데이트해야합니까? 새로운 오류 코드/메시지 쌍을 동적으로 추가 할 수 있어야합니까? 오류 메시지를 현지화해야합니까?

가장 간단한 방법은 IDictionary를 사용하여 오류 코드/메시지 값을 열심히하는 것입니다. 즉, 모든 업데이트를 수행하려면 응용 프로그램을 다시 컴파일하고 다시 배포해야합니다.

리소스 파일도 사용할 수 있습니다. 이 경우 리소스 파일에 코드/메시지 쌍을 저장하면 응용 프로그램은 오류 코드를 키로 사용하여 적절한 오류 메시지 값을 찾습니다. 이렇게하면 코드/메시지 쌍을 동적으로 추가 할 수 있으며 지원해야하는 각 언어에 대한 별도의 리소스 파일을 만들어 쉽게 현지화 할 수 있습니다.

두 번째 옵션과 비슷한 세 번째 옵션은 오류 코드/메시지 쌍을 데이터베이스 테이블에 저장하는 것입니다. 응용 프로그램은 이미 데이터베이스와 대화하고 있기 때문에 최소한 배포 측면에서는 리소스 파일보다 간단한 옵션 일 수 있습니다. 그러나 이렇게하면 현지화가 더 어려워 질 수 있습니다.

나인 경우 미래에 지역화 할 필요가 있다고 생각하면 리소스 파일을 선택하고, 그렇지 않은 경우 데이터베이스를 선택합니다.

+0

+1, 내가 생각하기에 * 가장 간단한 * 방법은 Enum이 될 것입니다. – stuartd

관련 문제