рдСрдирд▓рд╛рдЗрди рд╕реЗрдЯрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ Amf рдФрд░ C #

рд╕реЗрдЯрд▓рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реЗрдЯрд▓рд░реНрд╕ рдСрдирд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереА, рдХреНрдпреЛрдВрдХрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рд╣рдж рддрдХ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╕реА # рдореЗрдВ рдПрдордПрдл рдкреНрд░рд╛рд░реВрдк рдХреЗ рдкрд╣рд▓реВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЗрд╕ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред



рдкрд╣рд▓реЗ рд╣рдореЗрдВ рд▓реЙрдЧрд┐рди рдЪрд░рдгреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред





рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ:



1. рдЪрд╛рд░реНрд▓реНрд╕ - рдПрдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░реЙрдХреНрд╕реА рдЬреЛ рдПрдордПрдл рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдкрд░реАрдХреНрд╖рдг рд▓рдВрдмреА рдирд╛рдЧ-рд╕реНрдХреНрд░реАрди рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИ, рдпрд╣ рд╣рд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред

2. Fiddler рднреА рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реИ, рдЬреЛ рдХрд┐ https рдЯреНрд░реИрдлрд╝рд┐рдХ (рдлреНрд░реА) рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯрддреА рд╣реИ ред

3. рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ, рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ:

- AS3 рдЬрд╛рджреВрдЧрд░ - рддреЗрдЬ, рдЖрд╕рд╛рди, рдлреНрд▓реИрд╢ рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдХрднреА-рдХрднреА рдордЬрд╛рдХрд┐рдпрд╛ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд╛рдЧ-рд╕реНрдХреНрд░реАрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред

- рдПрд╕рдбрдмреНрд▓реНрдпреВрдПрдл рдбрд┐рдХреНрд░рд┐рдкреНрдЯ (рдореБрдХреНрдд) + рдХрд┐рд╕реА рднреА рдлреНрд▓реИрд╢ рдбрд┐рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП http://www.sothink.com/ (рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрдо рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред

4. рдлреНрд▓реЛрд░реАрдирдлреИрдХреНрд╕ - рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдврд╛рдВрдЪрд╛ рдЬреЛ рдПрдордПрдл 0 рдФрд░ рдПрдордПрдл 3 рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде, рдЖрдк рдЧреЗрдо рд▓реЙрдЧрд┐рди рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



1. рд╕реАрдзреЗ https://www.diesiedleronline.de/de/api/user/login рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ

2. "рдмрд┐рдЧ рдмреНрд░рджрд░" рд╕реЗрд╡рд╛ http://bb.diesiedleronline.de/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреИрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рддреНрд░ рдХреБрдВрдЬреА рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

3. рдкрд╣рд▓реЗ рдкреИрдХреЗрдЬ рдЦреЗрд▓ рдХреЗ рдореБрдЦреНрдп рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВред



рдЖрдЗрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд▓реЙрдЧрд┐рди рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рдбрд▓рд░ рдХреЛ рдЪрд▓рд╛рдПрдВ, рдЖрдЗрдП рд╣рдо рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ https рдЯреНрд░реИрдлрд╝рд┐рдХ рдЦреЛрд▓реЗрдВ рдФрд░ рдЧреЗрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдвреВрдВрдвреЗрдВрдЧреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рд░реВрдк рджреЗрдЦреЗрдВрдЧреЗред





рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреИрд╕реЗ http рдЕрдиреБрд░реЛрдз, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рд╣реА рд╣рдореЗрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

  1. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  2. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  3. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  4. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  5. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  6. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  7. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;



  8. System. Net . ServicePointManager . ServerCertificateValidationCallback = delegate ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors ) { return true ; } ;







рдЙрд╕реА рддрд░рд╣ рд╣рдо рдЭрд╛рдБрдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд┐рдЧ рдмреНрд░рджрд░ рдХреЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЧреЗрдЯрд╡реЗ рдПрдбреНрд░реЗрд╕, рдЪреИрдЯ рд╕рд░реНрд╡рд░ рдХреАрдЬ рдорд┐рд▓рддреА рд╣реИрдВред



рдФрд░ рдпрд╣рд╛рдБ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдлрд╝реНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЛрдб рдкрд░ рдЭрд╛рдВрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред



FluorineFx





рдЦреЗрд▓ рдлреНрд▓реЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдордПрдл 3 рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЧреЗрдЯрд╡реЗ рдПрдбреНрд░реЗрд╕ (рдмреАрдмреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЯреНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рд╕реНрд╡рдпрдВ рдкреИрд░рд╛рдореАрдЯрд░ред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЪрд╛рд░реНрд▓реНрд╕ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЬ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ



рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ dServerCall рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕рдореЗрдВ dataObject рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред

рдареАрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЬрд▓реНрджреА рд╕реЗ рдХреНрд▓рд╛рд╕ рд╕реНрдХреЗрдЪ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдореВрд▓ рдЪреАрдЬрд╝ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдВ ...

рдлреНрд▓реЛрд░реАрдирдПрдХреНрд╕ - рдПрдХ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣рдо рд╕рднреА рдХреЛ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдХрд░ - рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг (рдорд┐рд▓рд╛рди)ред рд╣рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдкреИрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА

  1. [ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ ( рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯрдЯрд╛рд░реНрдЧреЗрдЯреНрд╕ред рдкреНрд░реЙрдкрд░реНрдЯреА | рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯрдЯрд╛рд░реНрдЧреЗрдЯреНрд╕ рдХреНрд▓рд╛рд╕ ) ред
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ AmfObjectName : рд╕рд┐рд╕реНрдЯрдо ред рдЧреБрдг
  3. {
  4. public const string DefaultPrefix = "defaultGame.Communication.VOред" ;
  5. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
  6. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ AmfObjectName ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо )
  7. {
  8. рдирд╛рдо = рдирд╛рдо ;
  9. }
  10. }


рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдиреЗ рдмреЙрдЯ рдореЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВрдЧреЗред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмреЗрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ WriteAMF3Object рддрд░реАрдХреЛрдВ рдореЗрдВ IO.AMFWriter рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬрд╛рдВрдЪ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдо рдлреНрд▓реЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ amf3 рдкреНрд░рд╛рд░реВрдк) рдФрд░ GetMemberред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ
  1. рдпрджрд┐ ( IsClassAttributed ( рдкреНрд░рдХрд╛рд░ ) )
  2. {
  3. propertyInfo = FindProperty ( рдкреНрд░рдХрд╛рд░, рд╕рджрд╕реНрдпред рдирд╛рдо ) ;
  4. }


рдЬрд╣рд╛рдБ

  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдмреВрд▓ IsClassAttributed ( рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░ )
  2. {
  3. var res = рдкреНрд░рдХрд╛рд░ред GetCustomAttributes ( рдЯрд╛рдЗрдкреЛрдлрд╝ ( AmfObjectName ) , рдЧрд▓рдд ) ;
  4. рд╡рд╛рдкрд╕реА рдЕрд╢рдХреНрдд ! = res && resред рд▓рдВрдмрд╛рдИ > 0 ;
  5. }
  6. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╕рдВрдкрддреНрддрд┐рдЗрдиреНрдлреЛ рдлрд╛рдЗрдВрдбрдкреНрд░реЙрдкрд░реНрдЯреА ( рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ amfObjName )
  7. {
  8. foreach ( рдкреНрд░рдХрд╛рд░ рдореЗрдВ var рдкреНрд░реЛрдкред GetProperties ( ) )
  9. {
  10. var attrs = propред GetCustomAttributes ( рдЯрд╛рдЗрдкреЛрдлрд╝ ( AmfObjectName ) , рдЧрд▓рдд ) ;
  11. if ( null == Attrs || 0 == attrsред рд▓рдВрдмрд╛рдИ ред ( ( AmfObjectName ) attrs [ 0 ] ) ред рдирд╛рдо ! = amfObjName )
  12. {
  13. рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
  14. }
  15. рд╡рд╛рдкрд╕реА рдкреНрд░реЛрдк ;
  16. }
  17. рд╡рд╛рдкрд╕реА рд╢реВрдиреНрдп ;
  18. }




рдЗрд╕реА рддрд░рд╣, AMFReader рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдмреЗрд╢рдХ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдкрдХреЛ рдорд┐рд▓реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ deserialization рдмрдирд╛рддреЗ рд╕рдордп рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдлреНрд▓реЛрд░реАрди рдХреИрд╢ рдореЗрдВ "рд░рдЬрд┐рд╕реНрдЯрд░" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ObjectFactory рд╡рд░реНрдЧ рджреЗрдЦреЗрдВ рдФрд░ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ



  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп AddToLocate ( рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореИрдкрдирд╛рдо )
  2. {
  3. _typeCacheред рдЬреЛрдбрд╝реЗрдВ ( рдореИрдкрдирд╛рдо, рдкреНрд░рдХрд╛рд░ ) ;
  4. }




рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рд╕рднреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ



  1. foreach ( рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ var рдкреНрд░рдХрд╛рд░ред GetExecutingAssembly ( ) ред GetTypes ( ) )
  2. {
  3. var attrs = рдкреНрд░рдХрд╛рд░ред GetCustomAttributes ( рдЯрд╛рдЗрдкреЛрдлрд╝ ( AmfObjectName ) , рдЧрд▓рдд ) ;
  4. if ( null == attrs || 0 == attrsред рд▓рдВрдмрд╛рдИ )
  5. {
  6. рдЬрд╛рд░реА рд░рдЦреЗрдВ ;
  7. }
  8. ObjectFactoryред AddToLocate ( рдкреНрд░рдХрд╛рд░, AmfObjectNameред DefaultPrefix + ( ( AmfObjectName ) attrs [ 0 ] ) рдирд╛рдо ) ;
  9. }




рд╡реИрд╕реЗ, AmfObjectName.DefaultPrefix рдЕрднреА рддрдХ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдШрд╛рд╡ рд╣реИ :)



рдЦреИрд░, рдЕрдм рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ:



  1. рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реЗрдЯрд▓рд░реНрд╕рдХрдВрдЯреНрд░реЛрд▓ред рд╡рд╕реНрддреБрдУрдВ
  2. {
  3. [ AmfObjectName ( "dServerCall" ) ]
  4. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ
  5. {
  6. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ int PlayerZoneId = 0 ;
  7. [ AmfObjectName ( "рдкреНрд░рдХрд╛рд░" ) ]
  8. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int рдкреНрд░рдХрд╛рд░ { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
  9. [ AmfObjectName ( "рдЬрд╝реЛрди" ) ]
  10. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯ рдЬреЛрдирдЖрдИрдб { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
  11. [ AmfObjectName ( "dataObject" ) ]
  12. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ DataObject { рдорд┐рд▓рддрд╛ рд╣реИ ; рд╕реЗрдЯ ; }
  13. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рдкрдЯрд╛рдирдХрд░реНрддрд╛ ( рд╕реЗрдЯрд▓рд░рдореИрд╕реЗрдЬ рд╕рдВрджреЗрд╢, рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛рдСрдмреНрдЬреЗрдХреНрдЯ )
  14. {
  15. рдЯрд╛рдЗрдк = ( рдЗрдВрдЯ ) рд╕рдВрджреЗрд╢ ;
  16. рдЬрд╝реЛрдирд┐рдб = рдкреНрд▓реЗрдпрд░рдЬрд╝реЛрдирдЖрдИрдб ;
  17. DataObject = dataObject ;
  18. }
  19. }
  20. }




рдбреЗрдЯрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд╣рд▓реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд░реНрд▓реНрд╕ рдХреЛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдмрдирд╛рддреЗ рд╣реИрдВ, рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИред рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЪрд╛рд░реНрд▓реА рдЧрд┐рд░ рдЧрдпрд╛ред рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрд░рд╛рдзреА рдХрд╛ рдирд╛рдо рд╣реИ: dUniqueIDред рдЕрдкрд╡рд╛рдж рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, IExternalizable рддрддреНрд╡ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо Google рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЙрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрдордХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рдЙрд╕рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдЦреБрд▓рд╛ рдЬрд╛рджреВрдЧрд░, рдЗрд╕реЗ рдПрдХ рдпреВрдПрд╕рдмреА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ



рдорд╣рд╛рди, рдпрд╣ рдлреНрд▓реЛрд░реАрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд░рд╣рддрд╛ рд╣реИ:

  1. [ AmfObjectName ( "dUniqueID" ) ]
  2. рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рд╕реЗрдЯрд▓рд░рдпреВрдирд┐рдХреИрдб : IExternalizable
  3. {
  4. [ AmfObjectName ( " рдпреВрдирд┐рдХрдЖрдИрдбреА 1 " ) ]
  5. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int UniqueID1 { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
  6. [ AmfObjectName ( " рдпреВрдирд┐рдХрдЖрдИрдбреА 2 " ) ]
  7. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int UniqueID2 { рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ; рд╕реЗрдЯ ; }
  8. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп ReadExternal ( IDataInput рдЗрдирдкреБрдЯ )
  9. {
  10. UniqueID1 = рдЗрдирдкреБрдЯред ReadInt ( ) ;
  11. рдЕрдиреЛрдЦрд╛ реи = рдЗрдирдкреБрдЯред ReadInt ( ) ;
  12. }
  13. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп WriteExternal ( IDataOutput рдЖрдЙрдЯрдкреБрдЯ )
  14. {
  15. рдЙрддреНрдкрд╛рджрдиред WriteInt ( UniqueID1 ) ;
  16. рдЙрддреНрдкрд╛рджрдиред WriteInt ( UniqueID2 ) ;
  17. }
  18. }




рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ, рддреНрд░реБрдЯрд┐ рдХреЛ рджреВрд░ рдХрд░рдиреЗ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рд░рд╣рддрд╛ рд╣реИ:



рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рдореЗрд╢рд╛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ :)

рдпрджрд┐ рдЗрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд▓реЛрдб рдХрд░реВрдВрдЧрд╛ред



All Articles