문제

질문이 있습니다. 참조 된 필드에 속성을 얻는 우아한 방법이 있습니까? 즉.:

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. 그러나이 접근법은 매우 연약하고 일반적으로 매우 나쁩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top