2013-08-07 2 views
0

인터넷 서핑을 시도했지만 원하는 것과 관련이 없습니다.C# 속성을 쿼리하는 중

이것은 ASP.Net과 관련됩니다. 그러나 다른 어떤 경우도있을 수 있습니다. 다음

class SomeAttribute :Attribute 
{ 
    string someparam; 
    string SomeParam 
    { 
     get{ return someparam;} 
     set { someparam = val;} 
     //the value generated for someparam is dynamically generated with respect to some attribute present in the request header. 
    } 
} 

는 [권한 부여]과 비슷가 그물 사용자가 로그인 한 경우 확인하기 위해 ASP를 그물 구성원에 사용하는 속성 나의 속성이며 페이지에 로그인 할 때 그를 다시 리디렉션 검증이 실패하면.

[SomeAttribute] 
    public void someFunction 
    { 
     //i want to retrieve here the value of someparam jus generated before entering this method. 
    } 

참고 난 어떤 값을 전달하거나 임의의 속성에 명명 된 속성을 사용하지 않는다 :

I는 이하와 같은 방법과 관련된 속성을 갖는다. 메소드가 호출 될 때마다 나에게 조건을 검사하여 true 또는 false를 리턴하므로 함수가 호출되거나 호출되지 않습니다.

필자의 경우, 유효성을 검사 한 후 값을 생성하고이 값을 'somefunction'과 관련된 함수와 공유해야합니다.

반사가 기능과 속성의 값과 관련된 속성을 가져 오는 데 도움이 될 수 있습니다.

하지만 여기서는 다른 기능에서 값을 가져오고 싶지 않습니다. 그리고 난 그냥 속성을 가져오고 싶지 않아.

이전에 함수가 호출 될 때 앞서 언급했듯이이 특성이 작동합니다. 속성이하는 일은 요청 헤더에서 일부 데이터를 가져 와서 일부 처리를 수행하고 값을 생성합니다. 이제이 값은 그 직후에 함수에 전달되어야합니다.

+0

속성은 컴파일 할 때 빌드되며 런타임에 변경할 수 있습니다. 자세한 내용은 http://stackoverflow.com/questions/2311719/is-net-attribute-feature-used-at-compile-time-or-run-time-or-both를 확인하십시오. – nozari

+0

세션 또는 요청 개체를 사용하여 값을 전달할 수 있습니다. – nozari

+0

나는 당신의 질문을 이해하지 못한다. "그러나 여기서 속성의 가치는 유지 될 것이다 ...". 분명히 해줄까요?또한, 당신은 무엇을 요구하고 있습니다. 가능한지 또는 무엇이 있는지 알고 싶습니까? – Patrick

답변

1

글쎄, 당신이 원하는 것은 분명 가능하지만, 런타임이나 MVC 모델을 최적으로 사용하지는 못할 것입니다.

이 특별한 경우에는 속성을 주석으로 생각하십시오. 함수, 컨트롤러 등을 표시하여 실행시 런타임에 다르게 동작하도록하는 용도입니다. 애트리뷰트 자체는 디자인의 다른 부분에 다르게 동작하도록 신호를 보내는 대신 작업의 대부분을 수행하면 안됩니다.

일부 헤더 값을 확인하고이를 기초로 계산하는 것처럼 보입니다. 이를 달성하기 위해 요청 클래스에서 extension methods을 사용할 수 있습니다.

이제 컨트롤러 기능 안에서 헤더 값이 존재 함을 보장한다고 가정 해 봅시다. 당신은 IActionFilter을 구현하는 RequireHeaderValues라는 속성을 가질 수 있습니다. 이 속성은 헤더에 필요한 값을 확인하고 존재하지 않는 경우 응답을 다른 위치로 라우트하거나 오류를 나타냅니다. 이렇게하면 함수 내부에서 Request 객체의 확장 메서드를 호출하면 값이 존재한다는 보장을 받게됩니다. MVC 런타임은 필터 속성을 자동으로 호출합니다. 자세한 내용은 this을 참조하십시오.

+0

괜찮습니다! 나는 그것을 @Ameen 얻는다. 나는 이것을 시도하고 여기로 돌아갈 것이다. 감사. –

관련 문제