PostSharpред рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдСрдбрд┐рдЯ рдХрд╛рд░реНрдп

рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░! рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдПрдУрдкреА рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдХреИрд╢рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЖрдЬ рд╣рдо рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ - рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдСрдбрд┐рдЯрд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдпред рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдХрд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓рдЧрднрдЧ рд╣рд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдореБрдЦреНрдп рдЙрдкрдХрд░рдг - .net рдкрд░рд╛рд╡рд░реНрддрдХ, ILSpy, dotPeek рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рд╕рдВрд░рдЪрдирд╛, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдФрд░ рд╡реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рддрд┐рд╢рдд рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рддрдм рддрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдЙрддреНрдкрд╛рдж рдХреЗ рдЕрдВрджрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ "рдХреАрдбрд╝реЗ" рджреЛрдиреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбрд┐рдмрдЧрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рдж рдХреЛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕рдордп рдкрд░ рд░реЛрдХрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рддрддреНрдХрд╛рд▓ рдФрд░ рддреНрд╡рд░рд┐рдд рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рддреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рд╣рдо рдЕрдм рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


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



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

public class BankAccount
{
static BankAccount()
{
Balance = 0;
}
public static decimal Balance { get ; private set ; }

public static void Deposit( decimal amount)
{
Balance += amount;
}

public static void Withdrawl( decimal amount)
{
Balance -= amount;
}

public static void Credit( decimal amount)
{
Balance += amount;
}

public static void Fee( decimal amount)
{
Balance -= amount;
}
}

* This source code was highlighted with Source Code Highlighter .


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

[ Serializable ]
public class TransactionAuditAttribute : OnMethodBoundaryAspect
{
private string _methodName;
private Type _className;
private int _amountParameterIndex = -1;

public override bool CompileTimeValidate(MethodBase method)
{
if (_amountParameterIndex == -1)
{
Message.Write(SeverityType.Warning, "999" ,
"TransactionAudit was unable to find an audit 'amount' in {0}.{1}" ,
_className, _methodName);
return false ;
}
return true ;
}

public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
_methodName = method.Name;
_className = method.DeclaringType;

var parameters = method.GetParameters();
for ( int i=0;i<parameters.Length;i++)
{
if (parameters[i].Name == "amount" )
{
_amountParameterIndex = i;
}
}
}

public override void OnEntry(MethodExecutionArgs args)
{
if (_amountParameterIndex != -1)
{
Logger.Write(_className + "." + _methodName + ", amount: "
+ args.Arguments[_amountParameterIndex]);
}
}
}

* This source code was highlighted with Source Code Highlighter .


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

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

[ Serializable ]
public class ExceptionLoggerAttribute : OnExceptionAspect
{
private string _methodName;
private Type _className;

public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
{
_methodName = method.Name;
_className = method.DeclaringType;
}

public override bool CompileTimeValidate(MethodBase method)
{
if (! typeof (Form).IsAssignableFrom(method.DeclaringType))
{
Message.Write(SeverityType.Error, "003" ,
"ExceptionLogger can only be used on Form methods in {0}.{1}" ,
method.DeclaringType.BaseType, method.Name);
return false ;
}
return true ;
}

public override void OnException(MethodExecutionArgs args)
{
Logger.Write(_className + "." + _methodName + " - " + args.Exception);
MessageBox.Show( "There was an error!" );
args.FlowBehavior = FlowBehavior.Return;
}
}

* This source code was highlighted with Source Code Highlighter .


рдФрд░, рдлрд┐рд░ рд╕реЗ, рдореИрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CompileTimeInitialize рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП), рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ / рд╡рд░реНрдЧреЛрдВ / рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ / рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рджрд╕реНрдп рдХреЗ рдкреВрд░реНрдг рдирд╛рдо рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде:



рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рдХрдХреНрд╖рд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

// in AssemblyInfo.cs
[assembly: ExceptionLogger(AttributeTargetTypes = "LoggingAuditing.BankAccountManager" )]

* This source code was highlighted with Source Code Highlighter .


рдЬрдм рдЖрдк рд▓реЙрдЧрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдСрдбрд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднрдпрд╛рдирдХ рдЪреАрдЬреЗрдВ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИрдВ:



рджреЛ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкрд╣рд▓реБрдУрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЗрди рд╢рд╛рдирджрд╛рд░ рдХрдорд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╡реНрдпрд╛рдкрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реЗрдирджреЗрди рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдСрдбрд┐рдЯ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЖрдкрдХреА рдЯреАрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рд╢рд┐рдкрдореЗрдВрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рджреМрд░рд╛рди рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рддреА рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдб-рдЯреВрдЯрд╛ рд╣реБрдЖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдп рдЪрд░рдг рдореЗрдВ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЦрд╛рд╕рдХрд░ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд╕рд╛рдеред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдирд┐рджрд╛рди рдФрд░ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рдирд╣реАрдВ рд╕рдордЭреЗрдВ рддреЛ рдШрдмрд░рд╛рдПрдВ рдирд╣реАрдВред PostSharp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдореЗрдВ рдЦреЛрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдкрд░рд┐рдгрд╛рдо рдХреЛрдб рдХреЛ рд╡реИрд╕реЗ рднреА рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ PostSharp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ "рдХреНрд░реЗрдбрд┐рдЯ" рд╡рд┐рдзрд┐ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

public static void Credit( decimal amount)
{
Balance += amount;
}

* This source code was highlighted with Source Code Highlighter .


рдЕрдЧрд▓рд╛, TransactionAudit рдкрд╣рд▓реВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реА рдкрджреНрдзрддрд┐ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореА рдЕрд╕реЗрдВрдмрд▓реА (dll рдФрд░ exe рдлрд╝рд╛рдЗрд▓реЗрдВ) рдореЗрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛:

public static void Credit( decimal amount)
{
Arguments CS$0$0__args = new Arguments();
CS$0$0__args.Arg0 = amount;
MethodExecutionArgs CS$0$1__aspectArgs = new MethodExecutionArgs( null , CS$0$0__args);
CS$0$1__aspectArgs.Method = <>z__Aspects.m11;
<>z__Aspects.a14.OnEntry(CS$0$1__aspectArgs);
if (CS$0$1__aspectArgs.FlowBehavior != FlowBehavior.Return)
{
try
{
Balance += amount;
<>z__Aspects.a14.OnSuccess(CS$0$1__aspectArgs);
}
catch (Exception CS$0$3__exception)
{
CS$0$1__aspectArgs.Exception = CS$0$3__exception;
<>z__Aspects.a14.OnException(CS$0$1__aspectArgs);
CS$0$1__aspectArgs.Exception = null ;
switch (CS$0$1__aspectArgs.FlowBehavior)
{
case FlowBehavior.Continue:
case FlowBehavior.Return:
return ;
}
throw ;
}
finally
{
<>z__Aspects.a14.OnExit(CS$0$1__aspectArgs);
}
}
}

* This source code was highlighted with Source Code Highlighter .


рдФрд░ рдлрд┐рд░ рд╕реЗ: рдШрдмрд░рд╛рдУ рдордд! :) рдпрд╣ рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдЧрдбрд╝рдмрдбрд╝ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝ рд╕реЗ рдПрдХ рдЖрд╡рд░рдг рдХреЛ рдореВрд▓ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рд▓реВ рдХрд╛ рдХреЛрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдУрд╡рд░рд░рд╛рдЗрдВрдЯ рдСрдиреЗрдВрдЯреНрд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░реЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ (onExit, onSuccess, onException) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рдХреЛрдб, рдЬреЛ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреЛрд╕реНрдЯрд░реНрд╕рдк рдХрд╛ рдПрдХ рдирд┐рдГрд╢реБрд▓реНрдХ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдСрдирдПрдВрдЯреНрд░реА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рдХреЛрдб рдорд┐рд▓реЗрдЧрд╛:

public static void Credit( decimal amount)
{
Arguments CS$0$0__args = new Arguments();
CS$0$0__args.Arg0 = amount;
MethodExecutionArgs CS$0$1__aspectArgs = new MethodExecutionArgs( null , CS$0$0__args);
<>z__Aspects.a14.OnEntry(CS$0$1__aspectArgs);
Balance += amount;
}

* This source code was highlighted with Source Code Highlighter .


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

рд╕рдВрджрд░реНрдн:

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


All Articles