2012-03-12 6 views
0

다른 CryptographicExceptions를 사용자 지정 예외 및 메시지에 매핑하려고합니다. 예를 들어 "Object already exists"==> "기존 RSA 키 컨테이너에 액세스 할 권한이 없습니다". 그러나 CryptographicException 클래스를 살펴보면 다른 예외 유형과 같은 오류 코드 모음을 찾지 못합니다. 3.5에서 실행 중이므로 HResult를 사용할 수 없습니다. 마지막으로, 나는 메시지에 의존 할 수 없다. 왜냐하면 메시지가 현지화 될 수 있기 때문이다. 다른 아이디어?CryptographicExceptions의 오류 코드는 무엇입니까?

+0

매우 부서지기 쉬운 무언가를 만들려고하는 것처럼 들립니다. 예외 또는 던지는 클래스의 구현이 약간만 변경되면 더 이상 사용자 정의 된 메시지를받지 못합니다. 일반적으로 관리되는 언어에서는 래퍼 클래스에 대한 의존도를 최소화해야합니다. –

답변

1
public Exception GetMappedCryptographicException(CryptographicException e) 
{ 
    uint hresult = (uint)Marshal.GetHRForException(e); 

    switch (hresult) 
    { 
     case 0x8009000F; // OBJECT_ALREADY_EXISTS 
      return new Exception(e, "Not enough permissions to access RSA key container."); 
     default: 
      return new Exception(e, "Unexpected cryptographic exception occurred."); 
    } 
}