문제

다음을 수행 할 수있는 방법이 있습니까? 나 보다 속성 인수는 끊임없는 표현이어야한다는 점은 어떻게해야합니까? 내가로드하고 싶지 않다면 약간 바인딩을 사용하여 DatagridView에 대한 속성, 다음으로 가장 좋은 대안은 무엇입니까?

  class TestObj
  {
     private bool isBrowsable = false;

     [Browsable(isBrowsable)]
     public string String1
     {
        get
        {
           return "Foo";
        }
     }
     [Browsable(isBrowsable)]
     public string String2
     {
        get
        {
           return "Baz";
        }
     }
  }
도움이 되었습니까?

해결책

런타임에 동적 사용자 지정 유형 정보를 제공하여 iCustomtypedescriptor 인터페이스 - 그러나 이것은 속성을 가진 속성을 장식하는 것만 큼 간단하지는 않습니다.

다른 팁

런타임의 경우 아마도 당신은 아마도 iCustomtypedescriptor를보고 있다고 생각합니다. 컴파일 시간 결정 인 경우 컴파일러 지시문을 사용할 수있었습니다.


 #define ISBROWSABLE
 #if ISBROWSABLE
 [your attribute]
 #endif

유사한 접근법을 사용하여 일부 구성 파일 또는 데이터베이스에서 값을로드 할 수 있습니다.내 속성에서 동적 값을 설정하는 방법 클래스와 속성 이름을 통과함으로써, 예를 들어

isbrowsable ( "classname", "propertyname")]]

그러나 문자열 이름으로 입력하는 것은 성가신 일이며, 명백하고 어떻게 든 반사에서 결정할 수 있어야합니다. Postsharp 또는 Fody와 같은 Weaver 도구를 우리에게 시도 할 수 있습니다.

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