2013-01-22 3 views
0

내가만들기 상속 된 값을 찾을 수 없지만/

class Object 
{ 
    Vector2 positon; 
} 
이 위치는 PROPERT 그리드에서 편집 할

, 나는 browasable하지이 설정 할 수있을 것입니다 방법/읽기 전용 클래스를 모두 말해 PropertyGrid가에서 읽기 전용 객체에서 상속받은 클래스에서 나는 [Browsable(false)][ReadOnly(true)] 태그를 알고 있지만,이 태그는 모든 객체에 대해 설정합니다. 원하지 않습니다.

답변

1

위치 속성을 virtual으로 선언하고 파생 형식에서 재정의하십시오. 런타임시에 그 일을

public class Class1 
{ 
    public virtual string Lol { get; set; } 
} 

class Class1Impl1 : Class1 
{ 
    [Browsable(false)] 
    [ReadOnly(false)] 
    public override string Lol 
    { 
     get 
     { 
      return base.Lol; 
     } 
     set 
     { 
      base.Lol = value; 
     } 
    } 
} 

class Class1Impl2 : Class1 
{ 
    [Browsable(true)] 
    [ReadOnly(true)] 
    public override string Lol 
    { 
     get 
     { 
      return base.Lol; 
     } 
     set 
     { 
      base.Lol = value; 
     } 
    } 
} 

다른 질문, IsBrowsable 및 isReadOnly의 읽기 전용 속성입니다. 런타임에이 속성의 인스턴스를 변경할 가능성이 있는지 알고 싶으면 which I think is not.

+0

. 이것을 객체마다 설정할 수 있습니까? 두 개의 객체가 있고 그 중 하나의 객체를 편집 가능한 위치로 만들고 다른 객체를 편집 할 수 없도록하고 싶습니다. – Questioning

+0

내 예제에서 볼 수 있듯이 Class1Impl1은 읽기 전용이 아니지만 Class1Impl1은 읽기 전용이 아닙니다. 둘 다 Class1에서 상속하므로 네가 할 수 있습니다. – JoanComasFdz

+0

미안하지만 그건 내가 의미하는 바가 아니야. 내가 말하고 싶은 건; 특정 값을 가진 객체에 대해 런타임에 읽기 전용/찾아보기 값을 변경할 수 있습니다. – Questioning

1

런타임시 browseable 속성을 변경할 수 없다고 생각합니다.),하지만 당신은 당신의 조건을 검사하고 속성의 쓰기를 허용/거부하는 방법을 가질 수 있습니다. 그게 충분하다면, 내가 원한다면 무언가를 비웃는 것이 기쁠거야.

편집 : 나는 더 우아한 방법이 될 수 있다면 난 그냥 궁금 해서요, 그런 일을해야 할 수도 있습니다 생각

class SomeClass 
{ 
    private Object _foo; 
    private Object _bar; 

    public Object Foo 
    { 
     get 
     { 
      return _foo; 
     } 
     set 
     { 
      if (_bar != _foo) // replace with your test 
      { 
       _foo = value; 
      } 
     } 
    } 

} 
+0

이것은 분명히 내가 본 것일 가능성이 높기 때문에 실제로 볼 수있는 것이 될 것입니다. 실제 속성을 확인하는 것도 좋은 것입니다. – Questioning

+0

@Dino 편집이 완료되었습니다. –

관련 문제