Der Titel ist offensichtlich, ich muss wissen, ob Methoden zusammen mit Objektinstanzen in C# serialisiert werden, ich weiß, dass sie nicht in Java, aber ich bin ein wenig neu in C#. Wenn nicht, muss ich die ursprüngliche Klasse mit dem Byte-Strom (serialisiertes Objekt) in einem Paket ablegen, wenn ich sie an einen anderen PC sende? Kann die ursprüngliche Klasse wie eine DLL-Datei sein?Werden Methoden auch zusammen mit den Datenmembern in .NET serialisiert?
Antwort
Nein. Die Typinformationen werden zusammen mit dem Status serialisiert. Um die Daten zu deserialisieren, muss Ihr Programm Zugriff auf die Assemblys haben, die die Typen (einschließlich Methoden) enthalten.
Sie sagen Assemblies, also die Methoden der ursprünglichen Klasse als DLL-Datei funktionieren gut, oder? – Lisa
@Shaza: Ja. Bei beiden Seiten (Serialisierung und Deserialisierung) muss die Assembly (in der Regel DLL) den zu serialisierenden Typ enthalten. Dies muss erkennbar sein, damit der Typ von den Serialisierungsklassen korrekt instanziiert wird. –
Methoden werden nicht serialisiert.
Ich weiß nicht über Ihr Szenario, aber in eine Bibliothek (Assembly/Dll) und die Verwendung in das andere Ende deserialize bringt Sie alle.
Ps. Sie sollten wahrscheinlich einige Fragen mit den Faktoren in Ihrem Szenario stellen. Wenn Sie beabsichtigen, den Code & dynamisch zu senden, können Sie schreckliche Sicherheitskonsequenzen erstellen.
Ich war verwirrt, als .NET zuerst mit Serialisierung kam. Ich denke, es kam von der Tatsache, dass die meisten Bücher und Führer erwähnen, dass es Ihnen ermöglicht, Ihre "Objekte" als XML zu serialisieren und sie herumzubewegen, die Tatsache ist, dass Sie tatsächlich die Werte Ihres Objekts hydratisieren, damit Sie diese dehydrieren können. Zu keinem Zeitpunkt speichern Sie Ihr gesamtes Objekt auf Festplatte, da dies die DLL erfordern würde und nicht in der XML-Datei enthalten ist.
Es kann leichter sein, zu verstehen, wenn Sie C. Eine Klasse wie
class C
{
private int _m;
private int _n;
int Meth(int p)
{
return _m + _n + p;
}
}
gelernt habe, ist im Wesentlichen syntaktischer Zucker für
typedef struct
{
int _m;
int _n;
// NO function pointers necessary
} C;
void C_Meth(C* obj, int p)
{
return obj->_m + obj->_n + p;
}
Dies ist im Wesentlichen, wie nicht-virtuellen Methoden implementiert werden objektorientierte Sprachen. Wichtig dabei ist, dass die Methoden nicht Teil der Instanzdaten sind.
- 1. Object/Class-Methoden auch serialisiert?
- 2. Wie vererbte Klasse mit ProtoBuf-Net serialisiert werden
- 3. Jackson serialisiert nur Interface-Methoden
- 4. Warum jackson transiente Elemente auch serialisiert?
- 5. .NET-Basistyp kann nicht von WCF serialisiert werden
- 6. Wie diese XML in .NET (Array) serialisiert
- 7. Howto serialisiert werden mehrere Listen mit JQuery
- 8. Wie erfassten Wert in anonymen Methoden in .NET implementiert werden
- 9. Shims werden nicht für .NET-Methoden generiert
- 10. Dynamische Ignorieren von Datenelementen, die serialisiert werden
- 11. Wie hängen Python-Befehlszeilenargumente mit Methoden zusammen?
- 12. Können Haskell-Funktionen serialisiert werden?
- 13. Ist es besser, Klassenkonstanten in Datenmembern oder in Methoden zu speichern?
- 14. Protobuf-Net: Wie man Reihungen serialisiert?
- 15. Kann std :: function serialisiert werden?
- 16. Wie man eine Klasse umgestaltet, die in .NET serialisiert wird?
- 17. Wie in generische XML-Klassen serialisiert werden?
- 18. Debugging .NET dynamische Methoden
- 19. Warum Klasse serialisiert wird auch ohne NSCoding Protokoll
- 20. FlexJSON Klassenobjekte werden nicht vollständig serialisiert
- 21. Sollen Methoden, die reine virtuelle Methoden einer Interface-Klasse implementieren, auch als virtuell deklariert werden?
- 22. Wann gemeinsame Methoden in .NET zu verwenden
- 23. Werden Parameterdateien zusammen mit dem Workflow exportiert?
- 24. Öffentliche Methoden in Benutzersteuerelement C# .net
- 25. Wenn C++ konstante Methoden den veränderbaren Zustand synchronisieren, müssen auch nichtkonstante Methoden dies tun?
- 26. Wie serialisiert werden nur bestimmte Objekteigenschaften
- 27. Kann Valgrind zusammen mit Cygwin verwendet werden?
- 28. .NET Core WebAPI seltsame Körper in POST. Nicht korrekt serialisiert?
- 29. Können Web-Methoden überlastet werden?
- 30. Logging Eingang und Ausgang von Methoden zusammen mit Parametern automatisch?
Für Informationen gibt es ** viele ** Serialisierungs-APIs. Sie verhalten sich anders - es klingt * wie Sie 'BinaryFormatter' verwenden, aber im Allgemeinen sollten Sie versuchen, explizit zu sein, welche API Sie verwenden. –
Haben Sie Ihren Kommentar nicht erhalten? – Lisa
BTW, Serialisierung hat fast nichts mit C# zu tun, und alles mit .NET zu tun. –