문제

때를 구성하는 경우,부부의 오버로드를 취하는 문자열은 잘못된 인수의 매개변수 이름.나는 그것은 좋을 것이 없어 기억하기를 업데이트 ctor param 때마다 변경 메소드의 param name.거기에 간단한 방법을 사용하여 이 작업을 수행하려면 반영?

업데이트: 감사 2 응답자니다.당신이 두 질문에 대답하지만,아직 해결책으로 유지보수 두통입니다.(좋아요, 두통이지만,여전히...)을 설명하고,경 I 순서 params 나중하거나 제거하는 이 param-I'd 기억하기를 제외 건설습니다.이 있습 방법을 사용할 수 있는 뭔가의 라인을 따라

Object.ReferenceEquals(myParam, <insert code here>)

확실히 내가 다루는 관련 매개 변수는?는 방법,컴파일러 단계는 것을 방지하기 위해 나를 심하게 구성에 예외는 아니다.

는 말했다,나는 시작을 의심하는"간단한"부분에 원래의 질문을하지 않는 향후 있습니다.어쩌면 내가 그와 함께 넣어를 사용하여 문자열.:)

도움이 되었습니까?

해결책

반사는 적합하지 않습니다.

당신을 기억을 바로 그것을 얻을 수 있습니다.

다행히도 FxCop(또는 팀 코드 시스템 분석)도 지적하여 모든 불일치.

다른 팁

식을 사용할 수 있습니다 나무는 이를 위해,당신을 얻을 것이다 당신이 원하는 비용의 일부 이상한 구문입니다.E.g.

public void Resize(int newSize)
{
  if (newSize < 1)
  {
    throw new ArgumentException("Blah", NameOfVariable(() => newSize));
  }
  // ... whatever ...
}

는 NameOfVariable 은 다음과 같이 정의됩니다.

public static string NameOfVariable(Expression<Func<object>> expressionTree)
{
   var expression = (UnaryExpression)expressionTree.Body;
   var memberExpression = (MemberExpression)expression.Operand;
   return memberExpression.Member.Name;
}

이것은 또한이 있는 기회의 충돌에서 런타임을 전달하는 경우 이외의 다른 UnaryExpression 을 NameOfVariable.

나는 놀라지 않을 것이다면 또한 이 코드는 원인 FxCop,불평하고 Joe 멘션을 사용하여 FxCop 은 아마도 가장 좋은 방법이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top