рдФрд░ рдЕрдм, рд╣рдорд╛рд░реА рдкрд╣рд▓реА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рдЧрднрдЧ рддреАрди рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред
.NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рд╕реБрд░рдХреНрд╖рд╛ ред рдпрд╣ рд╕рдм рд╕рдордп рд╣рдордиреЗ рд╡реНрдпрд░реНрде рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рд╕рдмрд╕реЗ рддреАрд╡реНрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ, рд╣рдмреНрдмрд░-рд╕рдореБрджрд╛рдп, рдЬреЛ рдкрд╣рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдереЗ, рдиреЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред рд╣рдорд╛рд░реА рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ
рдирдпрд╛ WPF рдСрдмрдлреНрдпреВрдЬрди рдХреЛрд░
- рдЕрдм WPF рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рднреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред WPF рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреБрдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
- WPF рдпреБрдХреНрдд рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рдЬреЛ ILMerge рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
- рд╡рд░реНрдЧреЛрдВ рдФрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕реНрдорд╛рд░реНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд╣рд┐рд╖реНрдХрд░рдг рдЬрд┐рдиреНрд╣реЗрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкрддреНрддрд┐рдкрде рдЬреИрд╕реЗ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
- BAML рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ

(рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)
рдПрдХрддрд╛ 3 рдбреА рд╕рдкреЛрд░реНрдЯ
- рд╕рднреА рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ, рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред
- рд╕рднреА рдореЛрдб рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди, рдмрд╛рд╣рд░реА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдЫрд┐рдкрд╛рдирд╛, рдЕрдкрдШрдЯрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдПрдХрддрд╛ 3 рдбреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рдмрдВрдзрд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.5 рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛
- рдЕрдм obfuscator .NET 2.0, 3.0, 3.5, 4.0, 4.5 рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
- Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХреЛрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ obfuscated рд╣реИ
- рдореЛрдиреЛ рд╕реЗрд╕рд┐рд▓ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд
рдСрдЯреЛрдореИрдЯрд┐рдХ рдЗрдВрдЯреЗрд▓реАрдЬреЗрдВрд╕ рдСрдмреНрд╕рдлрд┐рдХреЗрд╢рди
- рдкрджрд╛рдиреБрдХреНрд░рдо рдкреЗрдбрд╝реЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░
- рдХрд╛рдлреА рдмреЗрд╣рддрд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ
- рдХреЛрдб рдореЗрдВ рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдСрдЯреЛрдбреЗрдХреНрдЯ рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╢реНрд░реЗрдгреА
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдХреНрд░рдорд╛рдВрдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд┐рдХ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП Enums)
- Microsoft рдпреВрдирд┐рдЯреА рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд╕рдмрд╕реЗ рдкреВрд░реНрдг рдореИрдЪ рдХреА рдЦреЛрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рдЕрд╕реНрдкрд╖реНрдЯ рдЕрдзрд┐рднрд╛рд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: рд╡рд┐рдзрд┐ (int arg) рдФрд░ рд╡рд┐рдзрд┐ <T> (T arg), рдЬрд╣рд╛рдВ T = int
- рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ LINQ рдХреЗ рд╕рд╛рде рдлрд┐рдХреНрд╕реНрдб рдЕрдкрдШрдЯрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛
- рд╡рд┐рд╡рд╢ рдЙрдкрд╕рд░реНрдЧ рд╕рд╣рд╛рдпрддрд╛
- Activator.CreateInstance рдФрд░ ConstructorInfo.Invoke рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдорд╛рдиреНрдпрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ \ type рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ред
- рдмреЗрд╣рддрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рдЕрдм рд╡реЗ рдЕрдХреНрд╕рд░ trifles рдкрд░ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
рд╕реНрдорд╛рд░реНрдЯ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгenums
string name = "Second"; var result = (Mode)Enum.Parse(typeof(Mode), name);
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдирдо рдореЛрдб рдХреЗ рд▓рд┐рдП, рдирд╛рдо рд╕реЗ рдорд╛рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рднреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдмрджрд▓рдиреЗ рд╕реЗ рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
serializer
var serializer = new XmlSerializer(typeof(RealySerializable)); var writer = new StringWriter(new StringBuilder()); serializer.Serialize(writer, new RealySerializable()); string res = writer.ToString(); public enum DataState { One, Two } public class RealySerializable { public int MyProperty { get; set; } public DataState State { get; set; } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, RealySerializable рдФрд░ DataState SerializableAttribute рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди RealySerializable рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде XmlSerializer рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░, рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЗрд╕реЗ рдирд╛рдо рдмрджрд▓рдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрддрд╛ рд╣реИред рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдиреНрдп рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХреЛрдВ (JSON, рдмрд╛рдЗрдирд░реА, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдПрдХ Enum DataState рдХреНрд░рдордмрджреНрдз рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдзрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдЧрд╛ред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ CreateInstance
var instance = Activator.CreateInstance(anyUnresolvedName); var work = instance as IRef;
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдирд╛рдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛ рд╣реИ, рддрджрдиреБрд╕рд╛рд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдпреВрдиреЗрд░реЗрд╕реЗрдиреНрдбреЗрдирд╛рдо рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдИрдЖрд░рдПрдл рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рдвреВрдВрдврддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рд╡рдВрд╢реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддрд╛ рд╣реИред
рдЕрдиреНрдп рдорд╛рдорд▓реЗ рднреА рдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ
рдЖрдЬрд╝рдорд╛рдПрдБ :
appfuscator.comрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рдирд╛
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдкреЛрд╖рд┐рдд рд▓рдХреНрд╖реНрдп рдХреЗ рдФрд░ рднреА рдХрд░реАрдм рд╣реИрдВ - рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдмрд┐рд▓рдХреБрд▓ рднреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╕ рдЕрдкрдиреА рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдмрд╣реБрдд рдЬрд▓реНрдж, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдФрд░ рд╕реБрдЦрдж рдФрд░ рдЙрдкрдпреЛрдЧреА рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЦрдмрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦреБрд╢ рд╣реЛрдВрдЧреЗред