Sto lavorando per creare una libreria C # che includa una DLL C da integrare con il nostro sistema di test. Probabilmente la DLL C ha quasi 100 funzioni a cui è possibile accedere e tutte provenienti dalla stessa DLL. Non ho bisogno di tutte le funzioni in questo momento, ma voglio assicurarmi di essere impostato in una direzione che renda l'implementazione di tutto gestibile.
La DLL "raggruppa" molte delle sue funzioni con scopi diversi per aiutare a creare separazione. Il mio piano era quello di creare una classe che fosse il punto di accesso principale che contiene funzioni generiche e quindi creare classi separate che creano metodi di estensione per la classe generica.
Diciamo che i miei "gruppi" sono:
- Generico
- Acquisizione
- Selezione
- L'interazione
- Utilità
Vorrei quindi creare la mia classe principale
public class BaseClass
{
// Generic methods
}
Quindi gli altri gruppi sarebbero ciascuno la propria classe di estensione statica:
public static class AcquisitionClassExtensions
{
public static int AcquisitionMethod1(this BaseClass b)
{
// Access DLL
}
}
E continua per gli altri gruppi. Questo mi permetterebbe di mantenere la BaseClass come la principale classe di oggetti con cui la DLL sarebbe stata interagita.
L'utente vedrebbe comunque un enorme elenco di metodi durante la visualizzazione di intellisense, ma da una manutenibilità del progetto posso tenere separate le cose. Sono sicuro che mi troverei nei problemi se uno dei metodi di estensione dovesse terminare di aver bisogno di un qualche tipo di tracciato, ma questo è minimo.
C'è un modo migliore per avvicinarmi a questo o mi sto preoccupando di nulla?
Modifica chiarezza:
Il gruppo generico o BaseClass
contiene l'accesso di base alla connessione al sistema hardware a cui è destinata la DLL e che manterrebbe lo stato. Gli altri gruppi sono operazioni speciali che possono essere eseguite sull'hardware. L'obiettivo è di aggiungere un nuovo set di funzionalità che può essere aggiunto con i metodi di estensione come gli altri raggruppamenti.