Ho cercato informazioni per aiutarmi a risolvere un problema di progettazione che mi confonde. Sono nuovo in situazioni di eredità complicate, quindi la mia soluzione potrebbe essere semplicemente radicata in un design migliore. Ma nel cercare di capire quale dovrebbe essere il mio progetto, continuo a pensare che devo davvero ereditare più di una classe base.Ereditarietà multipla?
Il mio caso specifico riguarda attività e diversi tipi di attività.
A partire dalla Asset ...
Ogni PhysicalDevice è un Asset
Ogni VirtualDevice è un Asset
Ogni Server è un Asset
Ogni PhysicalServer avrebbe bisogno di essere sia un PhysicalDevice e Server
Ogni VirtualServer sarebbe bisogno di essere sia un VirtualDevice e Server
Ogni netdevice è un PhysicalDevice
Ogni StorageArray è un PhysicalDevice
Una soluzione Credo che è quello di duplicare il codice Server per entrambe le PhysicalServers e VirtualServers tuttavia, mi sento come se questo va contro quello che im cercando di fare, che è ereditare.
Devono essere classi separate perché ognuno dei tipi avrà proprietà e metodi. Per esempio, Server avrà OSCaption, memoria, Procs, ecc PhysicalDevice avrà cose come posizione, di serie, Mercante ecc E VirtualDevice avrà un ParentDevice, Stato, ecc VHDLocation
Se il l'ereditarietà è una nave di linea quindi mi imbatto nel problema di non essere in grado di descrivere questi tipi in modo accurato.
Qualcosa che sembra intrigante è Interfacce. Sembra che io possa definire tutte le classi base come interfacce e implementarle nelle mie classi principali secondo necessità. ma, sono semplicemente incerto su quali siano le implicazioni se dovessi farlo.
per esempio, qualcosa come ...PhysicalServer: IAsset: IServer: IPhysical
Sono in acque profonde, quindi sono davvero solo in cerca di suggerimenti o di orientamento.
Si prega di non aggiungere "C#" fino ai confini dei vostri titoli. Ecco a cosa servono i tag. –