참조 된 필드에서 속성을 얻는 방법
-
19-09-2019 - |
문제
질문이 있습니다. 참조 된 필드에 속성을 얻는 우아한 방법이 있습니까? 즉.:
public class C1: Base
{
[MyAttribute]
public string Field1;
}
public class Base
{
private void Do(ref string field)
{
if (field has attributes)
DoSomething();
}
}
방법 do ()에서 필드의 속성을 얻으려면 어떻게해야합니까?
미리 감사드립니다.
해결책
당신이 그렇게 할 수있는 방법은 없습니다 ref string field
서명. 속성은 "인스턴스"가 아닌 선언 (필드, 클래스, 이벤트 등)에 적용됩니다.
당신이 ~할 수 있다 DO, 다음과 같은 방법을 변경합니다.
private void Do(Type fieldContainingType, string fieldName, ref string field)
그런 다음 반사를 사용하여 검사하십시오 fieldContainingType
보려면, 어떤 속성이 명명 된 필드에 적용되는지 fieldName
. 그러나이 접근법은 매우 연약하고 일반적으로 매우 나쁩니다.
제휴하지 않습니다 StackOverflow