Il titolo è ovvio, ho bisogno di sapere se i metodi sono serializzati insieme alle istanze di oggetti in C#, so che non sono in Java ma sono un po 'nuovo in C#. Se non lo fanno, devo mettere la classe originale con il flusso di byte (oggetto serializzato) in un pacchetto quando lo mando su un altro PC? La classe originale può essere come un file DLL?Anche i metodi sono serializzati insieme ai membri dati in .NET?
risposta
No. Le informazioni sul tipo sono serializzate, insieme allo stato. Per deserializzare i dati, il tuo programma dovrà avere accesso agli assembly che contengono i tipi (compresi i metodi).
Stai dicendo assembly in modo che i metodi della classe originale come file DLL funzionino bene, giusto? – Lisa
@Shaza: Sì. Entrambi i lati (serializzazione e deserializzazione) devono avere l'assembly (tipicamente DLL) contenente il tipo serializzato. Questo deve essere rilevabile affinché il tipo sia istanziato correttamente dalle classi di serializzazione. –
I metodi non sono serializzati.
Non conosco lo scenario, ma inserendo una libreria (assembly/dll) e utilizzandolo nell'altra estremità per deserializzare si ottiene tutto.
Ps. probabilmente dovresti crearne alcune poni qualche altra domanda con i fattori coinvolti nel tuo scenario. Se si intende inviare dinamicamente il codice &, è possibile creare conseguenze di sicurezza terribili.
Sono stato confuso quando .NET è venuto prima con la serializzazione. Penso che sia venuto dal fatto che la maggior parte dei libri e delle guide menziona che ti permette di serializzare i tuoi "oggetti" come XML e spostarli, il fatto è che in realtà stai idratando i valori del tuo oggetto in modo da poterli disidratare. in nessun momento si sta salvando l'intero oggetto su disco poiché ciò richiederebbe la dll e non è contenuto nel file XML.
Può essere più facile da capire se hai imparato C. Una classe come
class C
{
private int _m;
private int _n;
int Meth(int p)
{
return _m + _n + p;
}
}
è lo zucchero essenzialmente sintattico per
typedef struct
{
int _m;
int _n;
// NO function pointers necessary
} C;
void C_Meth(C* obj, int p)
{
return obj->_m + obj->_n + p;
}
Questo è essenzialmente come i metodi non virtuale sono implementate in lingue orientate agli oggetti. La cosa importante qui è che i metodi sono non parte dei dati di istanza.
- 1. I riferimenti const ai membri sicuri sono
- 2. Accesso ai campi associati ai membri statici
- 3. I membri di dati volatili sono semplicemente copiabili?
- 4. Accesso ai membri aggregati in sottoclasse
- 5. Rails modifica dati JSON serializzati
- 6. Come convertire JSON dati serializzati al NSDictionary
- 7. I membri della classe statici sono bloccati?
- 8. findOne che lancia undefined anche se i dati sono lì
- 9. Come passare HttpContext.Current ai metodi chiamati usando Parallel.Invoke() in .net
- 10. alveare - come far cadere tavolo alveare esterna insieme ai dati
- 11. I metodi LINQ sono metodi di estensione?
- 12. Accesso ai membri di dati template ereditati pubblici
- 13. I metodi Java nativi equivalgono ai metodi Java statici?
- 14. I membri virtuali sono chiamati tramite riflessione (in circostanze normali)?
- 15. Aggiunta di pulsanti nella cella di JTable insieme ai dati?
- 16. ottimizzazione di accesso ai membri in C++
- 17. Accesso ai membri privati di una superclasse
- 18. Evitare i metodi di estensione .NET per i tipi di dati numerici?
- 19. PHP Class membri e metodi
- 20. Serializzare i dati dei membri privati
- 21. I metodi astratti sono virtuali?
- 22. Manomanti metodi 'statici' rispetto ai metodi 'istanza'
- 23. Python: accesso ai membri di un set
- 24. Dove sono memorizzati i metodi in memoria?
- 25. A cosa servono i puntatori ai membri della classe?
- 26. accesso ai dati in DDD?
- 27. modo migliore per accedere ai membri privati in Javascript
- 28. Convalida dei dati serializzati delle rotaie
- 29. I membri statici aiutano l'efficienza della memoria?
- 30. Che cosa sono i metadati in .NET?
Per informazioni, ci sono ** lotti ** di API di serializzazione. Si comportano in modo diverso: * suona * come se stessi usando 'BinaryFormatter', ma in generale dovresti cercare di essere esplicito su quale API stai usando. –
Non hai ricevuto il tuo commento? – Lisa
BTW, la serializzazione non ha quasi nulla a che fare con C# e tutto ciò che riguarda .NET. –