2017-05-08 1 views
-1

Myatt 속성과 MyObj 클래스를 고려하면 속성이 Myatt 속성의 범위에 알려져 있다는 것이 다소 이상 스럽습니다. 그렇지 않니?속성에있는 이름

[AttributeUsage(AttributeTargets.Property)] 
public class MyAtt : Attribute 
{ 
    public MyAtt(string name) 
    { 
     this.Name = name; 
    } 

    public string Name 
    { 
     get; set; 
    } 
} 

public class MyObj 
{ 
    [MyAtt(nameof(ObjName))] //Can access to ObjName?! 
    public int ObjID 
    { 
     get; 
     set; 
    } 

    public string ObjName 
    { 
     get; 
     set; 
    } 
} 

업데이트 : 첫 번째 경우는 불가능하며 두 번째는 가능한 이유

미안 해요, 난 궁금하네요.

1. [MyAtt(nameof(this.ObjName))] 
2. [MyAtt(nameof(ObjName))] 

지금 받으십시오. 감사. 당신이 문법적으로 nameof(...) 고려하는 경우

+2

질문은 무엇입니까 :

Documentation 주요 사용 사례로 Attribute 예를 언급? 코드가 작동하는 것이 이상하다고 생각한다면? –

답변

1

그것은이다 (리팩토링의 결과로 계정에 어떤 이름 변경을 복용) 컴파일 타임에 해당 문자열을 작동 거기에서 지원 되는게 좋을 것 같은가요? 그래서, 이상하지 않습니다.

[DebuggerDisplay("={" + nameof(GetString) + "()}")] 
class C { 
    string GetString() { } 
} 
0

은, 그것은 이상한 아니다 - 당신의 속성이 문자열을 사용하고, 컴파일러가

관련 문제