2009-07-07 10 views
0

Situation J'ai 3 Interface définie comme suit.WinForms DataGridView Question

public interface IA { long ID { get; set; } } 

public interface IB : IA { string Name { get; set; } } 

public interface IC : IB { string City { get; set; } } 

, j'ai une classe appelée SampleClass qui implémente IC et dans cette classe, j'ai une méthode appelée GetData() qui retourne List<IC>. Puis dans mon Windows Form, j'ai un DataGridView. Je lie la grille comme suit.

SampleClass sampleClass = new SampleClass(); 
List<IC> list = new List<IC>(); 

foreach (var item in sampleClass.GetData()) 
{ 
    list.Add(((C)item)); 
} 

dataGridView1.DataSource = list; 

Question La grille affiche uniquement les champs de l'interface IC et aucun des champs de l'interface IB ou IA apparaît. Une idée pourquoi?

+0

Mettez à jour vos étiquettes pour inclure quelle langue, ressemble à C# mais ... –

+0

À ceux qui répondent, je crois que sa question est * POURQUOI * les méthodes d'IB et d'IA n'apparaissent-elles pas, non * COMMENT DOIS-JE * faire les méthodes apparaissent. En d'autres termes, puisque IC hérite de IB et IA, IC ne devrait-il pas avoir des méthodes IB et IA? –

Répondre

0

La source de données est liée à une liste d'IC, les données IC d'affichage de la grille. Si vous liez votre grille à la classe concrète qui hérite d'IC, vous pourrez aussi voir IB.

Questions connexes