0

나는 이것을 채우기 위해 DataGridViewBindingListBindingSource을 가지고있다.DataPropertyName을 C#에서 상속 된 개체의 속성으로 설정하는 방법?

public class MyBaseClass 
{ 
    public int SomeProperty {get; set;} 

    public MyBaseClass(int sp) { 
     SomeProperty = sp; 
    } 
} 

public class MyDerivedClass : MyBaseClass 
{ 
    public int AnotherProperty {get; set;} 

    public MyDerivedClass(int sp, int ap):base(sp) 
    { 
     AnotherProperty = ap; 
    } 
} 

DataGridView이 객체의 모두 목록을 가질 수 있습니다,하지만 난 DataGrid 열의의 DataPropertyName을 설정하는 방법을 모른다 : 내가 DataGridView을 채우기 위해 사용하고 개체는 다음과 같이 있습니다 상속 된 클래스에있는 AnotherProperty 이것이 가능합니까?

답변

0

가능합니다. 이 답변을 참조하십시오 : https://stackoverflow.com/a/22078353/2878550
필드를 참조하지만, MyCustomTypeDescriptor.GetProperties 메소드에서 다른 로직을 구현하여 해당 필드를 적용 할 수 있습니다.

0

귀하의 DataSourceMyBaseClass 개체의 컬렉션입니까? 그 속성을 가지고 있지 않은 MyBaseClass 개체로 무엇을 할 것인가?

public class MyBaseClass 
{ 
    public int SomeProperty {get; set;} 
    public virtual int AnotherProperty {get; set;} 

    public MyBaseClass(int sp) { 
     SomeProperty = sp; 
    } 
} 

public class MyDerivedClass : MyBaseClass 
{ 
    public MyDerivedClass(int sp, int ap):base(sp) 
    { 
     AnotherProperty = ap; 
    } 
} 
+0

내 데이터 소스가 MyBaseClass의 모음입니다뿐만 아니라 너무 MyDerivedClass의 일부를 포함 할 수 있습니다 :

하나의 옵션은 기본 클래스의 특성 virtual을 필요에 따라서 그것을 오버라이드 (override)하는 것입니다. –

+0

내 포인트는 그 속성이없는 기본 클래스 (또는 파생 클래스)에 대해 표시되어야하는 것입니다. 그냥 빈 셀? 기지의 가상 자산이 작동하지 않을까요? –

+0

행이 "유형"MyBaseClass 인 경우 해당 셀은 "----"이고 행이 "유형"MyDerivedClass 인 경우 셀은 해당 속성 (int 값)에 해당하는 값이됩니다. –