2009-09-18 4 views
4

속성에서 정적 Guid를 인수로 사용하려면 어떻게해야합니까?C# : 속성의 인수로 사용되는 정적 Guid

static class X 
{ 
    public static readonly Guid XyId = new Guid("---"); 
} 

[MyAttribute(X.XyId)] // does not work 
public class myClass 
{ 
} 

Guid는 읽기 전용이어야하기 때문에 작동하지 않습니다. const 일 수 없습니다. string 및 byte [] 표현도 읽기 전용입니다.

해결 방법이 있습니까?

답변

9

[Attributes]은 메타 데이터로 컴파일되고 static 변수는 런타임에 초기화되므로 물론 후자에 액세스 할 수 없으므로 불가능합니다 (물론 Reflection 제외). 표준

public const string MyGuid = "blah"; 

당신을 위해 작동하지 않을 경우

, 당신이 원하는 것을 달성 할 수있는 유일한 방법 AFAIK, 리플렉션입니다.

+0

AFAIK, 문자열은 읽기 전용이어야하며 const 일 수 없습니다. –

+1

아니, const 문자열을 가질 수 있습니다. –

+0

위에서 선언 한'string'은 상수이기 때문에 응용 프로그램에 컴파일되므로'Attributes'에서 사용할 수 있습니다. –

0

불행히도 Guid를 속성에 전달하는 좋은 방법은 없습니다. 해결 방법은 다른 유형을 사용하여 Guid로 변환하는 것입니다.

+0

예, 이것은 좋지만 다른 유형은 무엇입니까? –

+0

글쎄, 그것은 문자열 것입니다. 물론 GUID는 유형에 안전하지 않습니다. –

관련 문제