C# 동적 속성 인수
-
11-09-2019 - |
문제
다음을 수행 할 수있는 방법이 있습니까? 나 보다 속성 인수는 끊임없는 표현이어야한다는 점은 어떻게해야합니까? 내가로드하고 싶지 않다면 약간 바인딩을 사용하여 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 도구를 우리에게 시도 할 수 있습니다.
제휴하지 않습니다 StackOverflow