MSpec이 정적 필드 만 필요하도록 만드는 이유는 무엇입니까? 직접 때문에 /이/정리 대표/MSpec에서 테스트중인 모든 필드가 정적 인 이유는 무엇입니까?
cannot access non static field in static context
MSpec이 정적 필드 만 필요하도록 만드는 이유는 무엇입니까? 직접 때문에 /이/정리 대표/MSpec에서 테스트중인 모든 필드가 정적 인 이유는 무엇입니까?
cannot access non static field in static context
MSpec 컨텍스트 클래스를 인스턴스화하지 않고 오히려이 수립 호출 예를 들어, 코드는 여기에 오류를
public class When_not_enabled
{
private static ActionExecutingContext filterContext;
// On purpose I've made subject non static
private CompleteOrderGuardFilter subject;
Establish context =() =>
{
// Here I get cannot access non static field in static context
subject = new CompleteOrderGuardFilter(null, false);
filterContext = new ActionExecutingContext();
};
}
오류가 발생합니다. 따라서 상태 (클래스 인스턴스)가 작성되지 않으며 전 세계에서 사용할 수있는 대리인간에 전달하려는 모든 정보가 필요합니다. 지. static
.
안녕하세요. 나는 그 필요성을 이해한다. 구현의 관점에서 컴파일러가 필드를 정적으로 강제하도록 어떻게 지시합니까? – hvd
컴파일러는 정적 필드 자체에 대한 액세스를 강제 실행합니다. 이것은 C# 언어 디자인 때문입니다. –
http://stackoverflow.com/a/18157580/43846 – stuartd
두 명의 대표가 공용 대리인을 정의 함 void Establish(); 공개 대리자 void It(); void Method()와 같은 메소드 { } xx =() => a.State = "1"; yy =() => a.State = "2"; } "a"가 정적 일 필요는 없습니다. 질문 - 표면 아래에서 어떻게 mspec이 이것을 부과합니까? – hvd