2014-02-23 2 views
1

나는 나의 API 내가 (잘못된 서명) false를 반환 행사에서디버깅을 돕기 위해 반환 형식에 암시 적 변환을 사용해야합니까?

public bool CheckSignature(string data, string key) 
{ ... } 

, 내가 원하는에 깨끗하게 내 모든 호출자의 코드를 변경하지 않고 디버그 데이터를 얻을 수있는 기능을 다음과 같은 방법이있다. 내가 객체를 반환 한 경우

그것이이 SignatureResult하지만과를 반환하도록 내 API를 변경하는 나쁜 생각, 난 그저이

public class SignatureResult 
{ 
    public bool Validation {get;set;} 
    public SpecialDebugObject Debug {get;set;} 
} 
  • 같은 디버그 유형을 추가 할 수 기존 클라이언트가 중단되지 않도록 bool 로의 암시 적 변환?

  • 새 API의 경우 정상적으로 수행 할 수 있습니까?

답변

1

기존 고객 것이다 휴식, 이것은 주요 변경입니다.

CheckSignature에 대해 작성된 코드는 bool이 반환 될 것으로 예상합니다. 유형과 부울간에 암시 적 변환이 있어도 컴파일 된 IL에는 적절한 변환 명령이 없습니다.

대신 필드를 속성으로 변경하는 것과 비슷합니다 : you lose binary compatibility.

새 API를 사용하면 괜찮습니까?

아니겠습니까? 디버깅 논리를 노출하고 있습니다.


다음은 .NET의 주요 변경 사항에 대한 좋은 가이드입니다. A definitive guide to API-breaking changes in .NET. 보시다시피 메소드 서명은 매우 합리적인 것입니다. 반환 유형을 변경하거나 심지어 인수의 이름을으로 변경하는 것은 큰 변화로 간주됩니다.

관련 문제