2012-12-12 3 views
0

나는 값이 경우 비록 검사 할 [DelimitedRecord("|")]속성에서 값을 가져올 수 있습니까? "|"

나는 파일 헬퍼를 사용하고 난 내 클래스의 상단에 넣어 그렇지 않다면 예외를 던지고 싶습니다.

해당 속성이 해당 값을 가진 클래스에 있는지 확인할 때 사용할 수있는 항목은 무엇입니까? DelimitedRecordAttribute이 수단을 노출

// t is an instance of the class decorated with your DelimitedRecordAttribute 
DelimitedRecordAttribute myAttribute = 
     (DelimitedRecordAttribute) 
     Attribute.GetCustomAttribute(t, typeof (DelimitedRecordAttribute)); 

경우

편집

이것은 내가 당신과 같이 DelimitedRecordAttribute의 인스턴스를 검색 할 수 있습니다로 사용할 수있는 속성

available properties

답변

3

을 볼 것입니다 매개 변수를 얻는 것 (그것은 uld)를 사용하면 해당 수단 (일반적으로 속성)을 통해 값에 액세스 할 수 있습니다 (예 : 뭔가 같은 :

var delimiter = myAttribute.Delimiter 

http://msdn.microsoft.com/en-us/library/71s1zwct.aspx

UPDATE

귀하의 경우 공용 속성이있을 것 같지 않기 때문에, 당신은 비공개 필드를 열거하는 반사를 사용하여 볼 수 있습니다 값을 보유하는 필드를 찾을 수 있으면 예 이 속성이 filehelpers.sourceforge.net에서 경우

FieldInfo[] fields = myType.GetFields(
        BindingFlags.NonPublic | 
        BindingFlags.Instance); 

foreach (FieldInfo fi in fields) 
{ 
    // Check if fi.GetValue() returns the value you are looking for 
} 

업데이트 2

같은 필드 당신은

internal string Separator; 

그 클래스의 전체 소스 코드

후입니다
[AttributeUsage(AttributeTargets.Class)] 
public sealed class DelimitedRecordAttribute : TypedRecordAttribute 
{ 
    internal string Separator; 

/// <summary>Indicates that this class represents a delimited record. </summary> 
    /// <param name="delimiter">The separator string used to split the fields of the record.</param> 
    public DelimitedRecordAttribute(string delimiter) 
    { 
     if (Separator != String.Empty) 
      this.Separator = delimiter; 
     else 
      throw new ArgumentException("sep debe ser <> \"\""); 
    } 


} 

UPDATE 3

과 같이 구분 필드 가져 오기 :

FieldInfo sepField = myTypeA.GetField("Separator", 
         BindingFlags.NonPublic | BindingFlags.Instance); 

string separator = (string)sepField.GetValue(); 
+0

야 내가 MSDN의 예를보고 하였다. TypeId라는 객체가 무엇인지 예상 할 수있는 속성은 없습니다. 나는 파이프를 저장하지만 아무것도 볼 수 없다. – chobo2

+0

@ chobo2 : 값을 노출하는 속성이 없다면 리플렉션을 통해 값을 가져올 수 있습니다 (값이 인스턴스에 저장되지 않으면 반영하지 않고 얻을 수 있습니다). –

+0

@ chobo2 : 비공개 필드를 열거하는 방법을 보여주기 위해 내 게시물을 업데이트했습니다. 공개 속성이없는 경우 값이 저장 될 가능성이 큽니다. 들판을 살펴보고 당신이 가지고있는 가치를 지니고 있는지 확인해야합니다. –

관련 문제