2009-03-05 3 views
3

나는 약 Design-Time Attributes for Components을 읽었습니다. 거기에서 CategoryAttribute이라는 속성을 발견했습니다.C# : CategoryAttribute.Appearance 속성을 사용하는 방법

그리고 일반적인 범주의 수를 나열합니다 해당 페이지에 그것은

CategoryAttribute 클래스는 다음과 같은 일반적인 범주를 정의하는 것을 말한다. 그 중 하나는 예를 들어 Appearance입니다. 나는 생각했다, 빛났다! 그런 다음 [Category("Appearance")] 대신 [Category.Appearance]을 사용할 수 있습니다. 그러나 분명히 나는 ​​할 수 없었다? 그것을 쓰려고했지만 인텔리 센스는 그것을 집어 내지는 않을 것이고 컴파일되지 않을 것입니다. 내가 여기서 뭔가를 놓치고 있니? 그 속성이있는 것이 아닐까요? 그렇지 않다면 무엇을 위해서입니까? 그럴 경우 어떻게 사용합니까?

그리고 예, [Category("Whatever")]이 작동하려면 CategoryAttribute에 액세스 할 수 있도록 올바른 using이 있어야합니다. 나는 정의 된 공통 카테고리를 어떻게 사용하는지 궁금 할뿐입니다.

답변

3

MSDN에서 볼 수 있듯이 이것은 setter가 아니라 getter 속성 일뿐입니다.

public static CategoryAttribute Appearance { get; } 

는 사실, 여기에 코드가 리플렉터를 사용하여 어떻게 표시되는지를 보여줍니다 :

public static CategoryAttribute Appearance 
    { 
     get 
     { 
      if (appearance == null) 
      { 
       appearance = new CategoryAttribute("Appearance"); 
      } 
      return appearance; 
     } 
    } 

그래서이 많아서하지 않습니다. 클래스를보고 반사를 사용하는 경우

  foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false)) 
      { 
       bool result = attrib.Equals(CategoryAttribute.Appearance); 
      } 

는 기본적으로, 당신은 쉽게를 할 필요없이이 속한 카테고리 확인할 수 있습니다 : 나는 그것을 볼 수 있습니다

유일한 사용은이 같은 것입니다 문자열 비교. 그러나 불행히도 당신이 시도하는 방식으로 사용할 수는 없습니다.

+0

흠, 그건 그냥 보통 성가신 ... hehe. 한쪽 끝에서만 사용할 수있을 때 상수로 정의 된 속성의 요점은 무엇입니까? 오 잘. 정보 주셔서 감사합니다 :) – Svish

+0

당신은 자신의 카테고리 클래스를 만들 수 있습니다. 보십시오 [여기] (http://weblogs.asp.net/sfeldman/archive/2009/05/07/categoryattribute.aspx) –

2

정적 속성은 CategoryAttribute.Appearance를 통해 액세스 할 수 있습니다. 그러나 애트리뷰트 시스템은 애트리뷰트 선언에서 코드를 호출 할 수 없기 때문에 컴파일 할 필요가 없다. 아마도 [Category ("Appearance")]에 대해 정착해야 할 것입니다.

관련 문제