рдПрдХ рд╡рд░реНрдЧ рд╕рдВрдкрддреНрддрд┐ (рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░) рдореЗрдВ "# рдПрдХрд╛рдзрд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░"

Topic рдХрд╛ рдЬрдиреНрдо рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ (рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ) рдХреЗ рд▓рд┐рдП C # рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреЗ рдореБрджреНрджреЗ рд╕реЗ рд╣реБрдЖ рдерд╛ред рд╢реЗрдбрд▓ рдХреА рд╕рд▓рд╛рд╣ рдкрд░ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕реА # рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд▓реЗрдХрд░ рдЖрдпрд╛ред

C # рдореЗрдВ, рдЖрдк рдПрдХ рдХреНрд▓рд╛рд╕ рдХреЛ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдк рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рди рдмрдирд╛рдПрдВ?



рдЗрд╕рд▓рд┐рдП, рд╣рдо рдбреЙрдЯ 4 (рд╡рд░реНрдЧ рдЯреНрдпреВрдкрд▓ <>) рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрдпреВрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░реЗрдВрдЧреЗред рдбреЙрдЯрдиреЗрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ, рдПрдХ рдЯрдкрд▓ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдЖрд╕рд╛рди рд╣реИред

interface IClickableButton { event Action Click; } interface IColorButton { Color Color { get; set; } } interface IButtonWithText { string Text { get; set; } } interface IMyForm1 { Tuple<IClickableButton, IColorButton> Button { get; } } interface IMyForm2 { Tuple<IClickableButton, IButtonWithText> Button { get; } } interface IMyForm3 { Tuple<IClickableButton, IColorButton, IButtonWithText> Button { get; } } public class Button : IClickableButton, IColorButton, IButtonWithText { public event Action Click; public Color Color { get; set; } public string Text { get; set; } } class MyForm1 : IMyForm1 { private readonly Button _button = new Button(); public Tuple<IClickableButton, IColorButton> Button { get { return new Tuple<IClickableButton, IColorButton>(_button, _button); } } } class MyForm2 : IMyForm2 { private readonly Button _button = new Button(); public Tuple<IClickableButton, IButtonWithText> Button { get { return new Tuple<IClickableButton, IButtonWithText>(_button, _button); } } } class MyForm3 : IMyForm3 { private readonly Button _button = new Button(); public Tuple<IClickableButton, IColorButton, IButtonWithText> Button { get { return new Tuple<IClickableButton, IColorButton, IButtonWithText>(_button, _button, _button); } } } class UsageExample { void Example1(IMyForm1 form) { form.Button.Item1.Click += () => { }; form.Button.Item2.Color = Colors.Red; } void Example2(IMyForm2 form) { form.Button.Item1.Click += () => { }; form.Button.Item2.Text = "Hello, World!"; } void Example2(IMyForm3 form) { form.Button.Item1.Click += () => { }; form.Button.Item2.Color = Colors.Red; form.Button.Item3.Text = "Hello, World!"; } } 


рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдПрдХ рдмрдЯрди рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддреАрди рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ: рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдЯрди, рд░рдВрдЧ рдмрдЯрди рдФрд░ рдмрдЯрди рдкрд╛рдаред рдпрд╣ рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЧреБрдгреЛрдВ рдХрд╛ рдХреЗрд╡рд▓ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ Example1, Example2 рдФрд░ Example1, Example2 рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПред рдЗрд╕реА рд╕рдордп, рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯрдкрд▓ <> рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░реЗрдВ - рдЖрдкрдХрд╛ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ! рдЕрдм Item1, Item2, Item3 рдХреЛ Item1, Item2, Item3 , рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЯреНрдпреВрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрдо рд╕реЗ рдХрдо рдПрдХ рджрд░реНрдЬрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрд╡-рд╕рдорд╛рдзрд╛рди рд╣реИ - рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ!

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


All Articles