2015-01-09 4 views
2

NUnit 테스트 클래스 라이브러리 어셈블리에서 모든 테스트 이름을 검색 할 수 있지만 Category 특성에 전달 된 매개 변수에서 해당 범주 이름도 검색해야합니다. 예를 들어특성 매개 변수 값 추출

는 :

[Category("text")] 
public void test() {} 

나는 DLL에서 "text"을 얻을 필요가있다.

+1

nswer가 맞습니다. 올바른 것으로 표시하십시오. 이렇게하면 다른 사람들이 솔루션을 더 빨리 찾을 수 있습니다. – jlvaquero

답변

1

반사를 사용합니다. 예를 들어

:이 속성을 감안할 때

는 필드에 적용 :

<AttributeUsage(AttributeTargets.Field)> _ 
    Public NotInheritable Class DataBaseValueAttribute 
    Inherits Attribute 

    Private _value As Object 

    Public Sub New(ByVal value As Object) 
     _value = value 
    End Sub 

    Public Function GetValue() As Object 
     Return _value 
    End Function 
    End Class 

당신은 유형과 필드 정보를 얻기 위해 반사를 사용하여 속성을 얻을 수 있습니다 : C#에서

Dim tipo As Type = GetType(YourType) 
Dim fi As FieldInfo = tipo.GetField("fieldName") 

Dim attribs As Atributos.DataBaseValueAttribute() = CType(fi.GetCustomAttributes(GetType(Atributos.DataBaseValueAttribute), False), Atributos.DataBaseValueAttribute()) 
If attribs.Count > 0 Then 
    Return attribs(0).GetValue() 
Else 
    Return Nothing 
End If 

을 :

[AttributeUsage(AttributeTargets.Field)] 
public sealed class DataBaseValueAttribute : Attribute 
{ 
    private object _value; 
    public DataBaseValueAttribute(object value) 
    { 
     _value = value; 
    } 

    public object GetValue() 
    { 
     return _value; 
    } 
} 

Type tipo = typeof(YourType); 
FieldInfo fi = tipo.GetField("fieldName"); 

Atributos.DataBaseValueAttribute[] attribs = (Atributos.DataBaseValueAttribute[])fi.GetCustomAttributes(typeof(Atributos.DataBaseValueAttribute), false); 
if (attribs.Count > 0) { 
    return attribs(0).GetValue(); 
} else { 
    return null; 
} 
+0

jlvaquero, 답변 해 주셔서 감사합니다!) =). – 132u

+0

확인. 질문의 언어 태그를 씹는 것을 잊었 기 때문에 C#을 게시합니다. – jlvaquero

+0

jlvaquero, 고마워요! =) – 132u