MVC에서 작업 필터를 만들고 ActionFilterAttribute 클래스에서 상속하는 새 특성을 만들고 OnActionExecuted 메서드를 구현했습니다. 그런 다음이 새로운 속성으로 작업을 꾸며 냈습니다. 처음으로 모든 작업이 정상적으로 작동하면 Attribute의 생성자가 OnActionExecuted 메서드로 호출됩니다. 두 번째로이 동일한 액션을 호출하면 Attribute의 생성자가 호출되지 않았고 Action의 첫 번째 호출 중에 설정된 내부 특성 멤버의 상태가 여전히 보존된다는 것을 알 수 있습니다. 이는 동일한 Attribute 인스턴스는 액션에 대한 모든 호출에 사용됩니다. 각 속성 호출에 대해 새 인스턴스를 강제 적용하는 방법이 있습니까?Attribute의 동일한 인스턴스가 여러 메서드 호출에 사용됩니다.
-2
A
답변
2
유형, 구성원, 매개 변수 등에 속성을 첨부 할 때 속성 대상의 메타 데이터에 주석을 추가합니다. 귀하의 경우에는 속성을 메소드에 적용하므로 메소드가 호출되는 인스턴스가 아닌 메소드에 메타 데이터 레벨에 첨부됩니다. 즉, 적용 할 각 메소드에 대해 새 속성 인스턴스를 가져 오며 대상 메소드가 정의 된 클래스의 각 메소드 및 인스턴스에는 적용되지 않습니다.
메타 데이터에는 변경할 수있는 상태가 없으므로 올바르게 사용되는 경우 속성에 상태가 변경되지 않습니다. 속성의 작동 방식을 변경할 수 없으므로 내부 상태에 의존하지 않는 방식으로 속성을 구현해야합니다.
생성자가 처음으로 속성을 빌드하기 위해 호출됩니다. 일단 속성이 이미 생성되었으므로 액션에 다시 액세스 할 필요가 없으면 정적 생성자와 같은 방식으로 작동합니다. 이것은 추측입니다. 코드를 제공해주세요. – Nekeniehl
몇 가지 코드를 제공해 주시겠습니까? 정확히 무엇을 성취하고 싶은지 상상해 내기가 어렵습니다. – HimBromBeere