Eredità fra interfacce

martedì 19 gennaio 2010 - 17.07

Teech Profilo | Expert

Ho una struttura dove mi trovo dei conti che possono essere Clienti, Fornitori o Banche.
Per gestire questi oggetti ho utilizzato l'ereditarietà fra interfacce nel seguente modo:
Public Interface IAccount Readonly Property Code As Integer Readonly Property Description As String End Interface Public Interface ICustomer Inherits IAccount Property OtherData As String End Interface
Gli oggetti Customer sono gestiti da una collection:
Public Class Customers Inherits BindingList(Of ICustomer) ... End Class Private Class Customer Implements ICustomer Friend ReadOnly Property Description() As String Implements IAccount.Description ... End Class
Come vedete gli oggetti Customer li mantengo privati ed espongo solo le interfacce. Ora, associando la Collection Customers ad un DataSource di un DataGridView non riesco a mettere in Binding la proprietà Description con una colonna.
Public Class MioForm Private _customers As Customers Sub New() InitializeComponents() _customers=New Customers gridCustomers.DataSource=_customers End Class End Class
Il controllo gridCustomer ha una colonna con la proprietà DataPropertyName="Description" ma non avviene l'associazione: perchè? Se tolgo l'interfaccia IAccount e assegno le proprietà all'interfaccia ICustomer tutto funziona correttamente.
La collection vorrei continuare a gestirla sulle interfacce (BindingList(Of ICustomer)) così da tenere private le istanze degli oggetti.

Avete suggerimenti in merito?
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

tonyexpo Profilo | Senior Member

Ciao

in effetti ho provato anche io... e se il bindinglist è collegato all'oggetto tutto funziona correttamente.. mentre se è collegato ad una interfaccia, sembra riuscire a fare il binding solo sulle proprietà della interfaccia, senza riuscire con quelle della interfaccia da cui eredita........

io ho provato con un combobox in 1 applicazione winForms



Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5