Ho fatto un progetto con C++/CLI e devo dire era un abominio. Fondamentalmente era un'applicazione WinForms per gestire dipendenti, partite di hockey, scambi tra squadre, calendari ecc, ecc ...
Quindi puoi immaginare il numero di controlli gestiti che avevo sui miei moduli: calendari/raccoglitori data/ora, combo scatole, griglie, ecc.
La parte peggiore era utilizzare solo i tipi C++ per il mio back-end e utilizzare i tipi gestiti per il front-end. Innanzitutto non è possibile assegnare una stringa std a una stringa gestita. Avrai bisogno di convertire tutto. Ovviamente dovrai convertirlo di nuovo ...
Ogni volta che dovevo riempire una griglia, serializzavo le mie collezioni C++ a qualcosa come un vector<std::string>
, lo recuperavo nella mia libreria UI e poi lo passavo e lo facevo nuovo DataGridRow per aggiungerli alla griglia. Che ovviamente può essere fatto in 3 minuti con C# e alcuni da Linq a SQL.
Mi sono ritrovato con A + per quell'applicazione, ma sono onesto che sia stato assolutamente risucchiato. Non riesco a immaginare quanto fossero patetiche le altre app per me.
Penso che sarebbe stato più semplice se avessi usato List<Customer>^
(Elenco gestito di qualche oggetto) nel mio C++ invece di convertire sempre tutto tra i vettori di stringhe. Ma avevo bisogno di mantenere il C++ pulito di cose gestite.
/pissedof
... Sono consapevole di questo. Sono più alla ricerca di cose come stranezze o chicche extra che potrebbero usare C++/CLI per il framework .NET piuttosto che usare C# e VB.NET. Ad esempio, ci sono alcune piccole differenze tra C# e VB.NET anche se entrambi usano il CLR. –
L'unica buona ragione per il C++ gestito è l'interoperabilità. E il fatto che puoi avere "thunk" nativi (per la velocità, che può essere molto più veloce del codice gestito, esempio di crittografia). IMO utilizzando la modalità pura C++/CLI è inutile. – leppie