AOP рдФрд░ PostSharp рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡

рдПрдХ рдмрд╛рд░, рдореИрдВрдиреЗ PostSharp рдкрд░ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╢реЛрдз рдХрд┐рдпрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдкреЗрдВрдЪрдХрд╕ рдФрд░ рдХреБрдЫ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рднреА рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, PostSharp рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рдореБрджрд╛рдп рд╕реЗ рдЖрд╡рдзрд┐рдХ рдкреВрдЫрддрд╛рдЫ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛? рдХреНрдпреЛрдВ? тАЭ, рдореИрдВрдиреЗ рд╕рднреА i рдХреЛ рдбреЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдПрдХ рдкрдиреАрд░ рдореЗрдВ рдореБрдлреНрдд рдкрдиреАрд░


PostSharp рдЖрдкрдХреЛ IL рдХреЛ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЫрдбрд╝реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдирдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ MSBuild-th Task рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ ILDASM рдХрд░реЗрдЧрд╛, IL рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ ILASM рдХрд░реЗрдЧрд╛ - рдХрд╛рд░реНрдп рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИред рдПрдХ рд╕рдордп, рдореИрдВрдиреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд┐рдпрд╛ред (рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ рдХрд┐ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рдкрдЯрд╛рдЦреЛрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред)

PostSharp рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдШреЛрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзрд┐, рдХрд╣ рд░рд╣реА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рд╣реЛрдЧреА:

[WorkerThread] public void MyMethod() { тЛо } 

рдкреЛрд╕реНрдЯрдХрдореНрдкреНрд▓реАрд╢рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ PostSharp рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдХреБрдЫ Task.Factory.StartNew(() => { /* */ }); рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред Task.Factory.StartNew(() => { /* */ }); ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдФрд░, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП, рд╡реЗ рдореБрдЭрд╕реЗ рдмрд╣рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрдж рд╣реИ, рддрдм рд╕рдм рдХреБрдЫ рд╕рдмрдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдХреБрд▓ рдореМрдЬреВрдж рд╣реИред рдФрд░ рдпрд╣ PostSharp рдХреА рд╕рдорд╕реНрдпрд╛ рдереА - рдЙрд╕рдиреЗ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрдмрдХрд┐ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХрд╕рдВрдЧрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ IL рдХрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреБрдирд░реНрд▓реЗрдЦрди рд╣реИ, рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред

рдирд╢реЗ рдХрд╛ рдкреНрд░рднрд╛рд╡


рдореЗрд░реЗ рдкрд╛рд╕ [NotifyPropertyChanged] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╡рд░реНрдЧ рдерд╛ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рдЧрдП рдереЗ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдФрд░ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрдИ рдЪреАрдЬреЗрдВ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ INotifyPropertyChanged рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрджреНрднреБрдд рдерд╛ - рдпрд╣ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдФрд░ рдЕрдкрдардиреАрдп рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЬрд░реВрд░рдд рд╣реЛрдиреЗ рдкрд░ рднреА рдЗрд╕реЗ рдЫреВрдиреЗ рд╕реЗ рдбрд░ рд▓рдЧрддрд╛ рдерд╛ред

рджреВрд╕рд░реЗ, рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗ рд╣реА рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ INotifyPropertyChanged рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдПрдХ рдбрдмрд▓ рдХрд╛рд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреАрдХрд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рддреАрд╕рд░рд╛, рд╡рд┐рд╢реЗрд╖рддрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдм-рдпрд╛-рдХреБрдЫ рдирд╣реАрдВ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрдврд╝рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ NotifyPropertyChanged() рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдкрд░ NotifyPropertyChanged() рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд╛, рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛ NotifyPropertyChanged() ред

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

рд╡реИрдХрд▓реНрдкрд┐рдХ?


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

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

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

рд╡рд╣ рд╕рдм рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ AOP / PostSharp рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд┐рд░реНрдл рдореЗрд░реА рдирд┐рдЬреА рд░рд╛рдп рд╣реИред рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╕реБрдкрд░ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВ! тЦа

Source: https://habr.com/ru/post/In123222/


All Articles