아래 속성에 속성 문자열을 지정하고 싶습니다.속성에 속성을 할당하는 방법
[ExtractKeyAttribute(**"Extraction"**)]
public class Extract
{
....
}
추출은 제 문자열이지만 하드 코드는 필요 없습니다. 할당하는 더 좋은 방법에 대한 제안
아래 속성에 속성 문자열을 지정하고 싶습니다.속성에 속성을 할당하는 방법
[ExtractKeyAttribute(**"Extraction"**)]
public class Extract
{
....
}
추출은 제 문자열이지만 하드 코드는 필요 없습니다. 할당하는 더 좋은 방법에 대한 제안
당신은 할 수 없습니다.
속성 값 은이어야하며 상수 표현식이어야합니다. 값은 컴파일 된 코드로 구워집니다. 상수 표현식을 사용하고 싶지 않다면 속성을 사용할 수 없으며 그렇게해서는 안됩니다. 다른 접근법을 사용해야 할 때 속성을 사용한다는 의미 일 수 있습니다.
에릭 리 퍼트 (Eric Lippert)의 블로그 게시물 properties vs attributes을 읽어 보시기 바랍니다.
물론 문자열 리터럴을 사용할 필요는 없습니다. 당신은 가질 수 :
[ExtractKey(ExtractionKeys.Extraction)]
...
public static class ExtractionKeys
{
public const string Extraction = "Extraction";
}
...하지만 여전히 컴파일 타임 상수입니다.
답장을 보내 주셔서 감사 드리며 링크 – user1990395
@user1990395를 통해 확인하겠습니다. 귀하가 무슨 뜻인지 모르겠군요. 귀하의 의견을 명확히 해주시면 답변을 드릴 수 있습니다. –
완전성을 위해, 하드 리터럴을 피하기위한 또 다른 공통 (-ish) 옵션은 서브 클래스가 런타임시 실제 코드에서 일반 값으로 해석 할 수 있도록 속성을 서브 클래스 화하는 것입니다. –
귀하의 의견에 (정적) 클래스에 모든 (문자열) 값이 있다고합니다. 정적 클래스가 읽기 전용 속성을 가진 클래스입니까? 내 말은, 가치가 변하는 것인가? 그렇지 않은 경우 정적 클래스의 일부 속성을 const 문자열 값으로 바꿉니다. U는이 값을 사용하여 속성을 설정할 수 있습니다.
그래서 ...
static class MyClass
{
public string MyValue {get;}
}
이 될 것입니다 :
이static class MyClass
{
public const string MyValue= "MyValue";
}
이제 속성을 설정할 수 있습니다 다음과 같이
[ExtractKey(MyClass.MyValue)]
을 당신의 속성을 수정하려는 경우 속성을 사용하는 경우이 코드로 수행 할 수 있습니다.
ExtractKeyAttribute myAttribute = typeof(Extract).GetCustomAttributes(typeof(ExtractKeyAttribute), false)[0] as ExtractKeyAttribute;
myAttribute.MyValue = "MyRunTimeValue";
속성 자체에 속성을 넣을 수 있습니까? –
전화하는 방법? 무엇을 키로 추출해야하는지 정의하는 속성이있는 것 같습니다. 아마'KeyName' 속성을 가지고 속성에 두었다면, 추출을 수행하는 모든 것이 클래스의 속성에서'KeyName' 속성을 찾은 다음 그 속성을 가진 속성에서 키의 이름을 얻을 수 있습니다. 말이 돼? –
@ChrisNielsen 네, 이해가 되네요 ... 저는 const 문자열을주고 속성에 할당했습니다. – user1990395