2013-07-25 1 views
1

AttributeUsage 특성을 가진 간단한 클래스를 만들었습니다. 빌드를 시도 할 때 오류가 발생했습니다.특정 서명이있는 메서드에 대한 사용자 지정 특성 만들기

Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute

그런 다음 클래스에서 속성을 상속하고 모든 것이 정상입니다.

속성을 사용하면 Attribute 클래스에서 상속해야합니다. 제 질문은 메소드가 특정 서명을 갖도록하는 속성을 만들 수 있습니까?

도움 주셔서 감사합니다.

답변

0

정확하게 이해 한 경우 : 사용자가 찾고있는 것은 사용자 속성에 의한 편집을 제어하는 ​​도구입니다. stylecop 또는 fxcop이 사용자의 필요에 맞는지 확인할 수 있습니다. 또는 Visual Studio를 확장하여 소스 코드 모델에 액세스 할 수도 있습니다. 확장 기능은 소스 코드를 확인하고 (http://blogs.msdn.com/b/sqlserverstorageengine/archive/2007/03/02/using-visual-studio-s-code-model-objects-for-code-base-understanding.aspx 참조) 속성을 평가하고 컴파일러 경고, 오류를 생성 할 수 있습니다.

===================================

원래 답변 :

답변 : 그냥 해당 생성자

[AttributeUsage(AttributeTargets.All)] 
public class HelpAttribute : System.Attribute 
{ 
    // Required parameter 
    public HelpAttribute(string url) 
    { 
     this.Url = url; 
    } 

    // Optional parameter 
    public string Topic { get; set; } 

    public readonly string Url; 


} 

public class Whatever 
{ 
    [Help("http://www.stackoverflow.com")] 
    public int ID { get; set; } 

    [Help("http://www.stackoverflow.com", Topic="MyTopic")] 
    public int Wew { get; set; } 

    // [Help] // without parameters does not compile 
    public int Wow { get; set; } 
} 

허용 된 매개 변수 유형은 MSDN에서 liste 있습니다에게 제공해야합니다 : http://msdn.microsoft.com/en-us/library/aa664615(v=vs.71).aspx

추가 읽기 : http://msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx

+0

나쁜 영어로 죄송합니다. 내 질문에 나는 물어 보려고했다 : 내가 속성을 만들 때, 그 속성은 특정 서명을 가지고있는 방법을 강요해야한다. 나는 속성의 생성자 (서명)에 대해 걱정하지 않는다. 당신이 준 예제에서는 : string url은 필수 매개 변수이고 Topic은 parameter라는 이름입니다. 여기에 예가 있습니다 : 내 메소드에 Help 속성을 사용하면 해당 Help 속성은 메소드가 string 및 int 매개 변수를 갖도록 강제해야합니다. – Dilshod

+0

질문을 다시 작성하겠습니다. 메서드의 서명을 제어하기 위해 특성을 쓸 수 있습니까? – Fried

+0

맞아. – Dilshod

관련 문제