Crea un’istanza di un object con un tipo determinato in base al runtime

Sono in una situazione in cui mi piacerebbe istanziare un object di un tipo che sarà determinato in fase di runtime. Devo anche eseguire un cast esplicito per quel tipo.

Qualcosa come questo:

static void castTest(myEnum val) { //Call a native function that returns a pointer to a structure IntPtr = someNativeFunction(..params..); //determine the type of the structure based on the enum value Type structType = getTypeFromEnum(val); structType myStruct = (structType)Marshal.PtrToStructure(IntPtr, structType); } 

Questo ovviamente non è un codice valido, ma spero che trasmetta l’essenza di ciò che sto cercando di fare. Il metodo su cui sto effettivamente lavorando dovrà eseguire l’operazione di marshalling su ~ 35 tipi diversi. Ho diversi altri metodi che dovranno fare qualcosa di simile con lo stesso insieme di tipi. Quindi, mi piacerebbe isolare la logica di determinazione del tipo da questi metodi in modo che ho solo bisogno di scriverlo una volta, e in modo che i metodi rimangano puliti e leggibili.

Devo ammettere di essere un principiante assoluto al design. Qualcuno potrebbe suggerire un buon approccio a questo problema? Sospetto che possa esserci uno schema di progettazione appropriato di cui non sono a conoscenza.