나는 주제에 this article을 발견하고 시도 다음 C#을 - 속성 생성자에서 던지는 예외
public class FailerAttr : Attribute {
public FailerAttr(string s) {
throw new Exception("I should definitely fail!");
}
}
그리고 단위 테스트 프로젝트의
나는 다음과 같은 한 :using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class Test {
[TestMethod]
public void GoFail() {
// Make sure attribute will get initialized
new Failer();
}
private class Failer {
[FailerAttr("")]
public int Prop { get; set; }
}
}
나는 테스트를 실행하면 성공합니다. 따라서 질문은 다음과 같습니다.
- 왜 실패하지 않습니까?
- 속성에서 예외를 던지는 것은 정말 나쁜 생각입니까? 왜냐하면 나는 내가 필요하다고 생각하기 때문이다.
일부 환경 정보는 (단지의 경우는 관련이) :
- 단위 테스트 ReSharper에서의 단위 테스트 러너 (R 번호의 v8.2.0.2160)
- 비주얼 스튜디오 v11.0.61030를 통해 실행됩니다. 0
리플렉션을 사용하여 속성을 가져올 수 있습니까? –
@KarelFrajtak 확실하지 않습니다. 아직 시도하지 않았습니다. 잠시 후에 다시 시도 할 것입니다. – Dethariel
당신의 코멘트'// 속성이 초기화 될지 확인하십시오'는 거짓입니다. 이 속성은 속성을 조사 할 때 (일반적으로 리플렉션을 통해) 생성됩니다. – Bun