рдЧрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡

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


рдХреНрд╡реЗрд░реА рдкреАрдврд╝реА рдХрд╛рд░реНрдп


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

 string BuildQuery() { ... if (IsDateFromSpecified) strQuery += "DateFrom >= '" + DateFromValue.ToString() + "'"; ... } 


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


рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ


рдХреНрдпрд╛ рдХрд░реЗрдВ? рдкрд╣рд▓рд╛, рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрд┐рдд рддрд╛рд░ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 const string MORE_OR_EQUALS_EXPRESSION = "{0} >= '{1}'"; const string DATE_FROM_ATTRIBUTE = "DateFrom"; string BuildQuery() { ... if (IsDateFromSpecified) strQuery += string.Format(MORE_OR_EQUALS_EXPRESSION, DATE_FROM_ATTRIBUTE, DateFromValue.ToString()); ... } 
const string MORE_OR_EQUALS_EXPRESSION = "{0} >= '{1}'"; const string DATE_FROM_ATTRIBUTE = "DateFrom"; string BuildQuery() { ... if (IsDateFromSpecified) strQuery += string.Format(MORE_OR_EQUALS_EXPRESSION, DATE_FROM_ATTRIBUTE, DateFromValue.ToString()); ... }


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

 // -  predicate.Add(DGA.FlowId.EqualsTo(WorksFlowId)); //     predicate.Add(DGA.DogovorOfWorkID.EqualsTo(CurrentDocument.Id)); // if (DateFrom != null) predicate.Add(DGA.WorkEndsAt.MoreOrEqualThan(DateFrom.Value)); if (DateTo != null) predicate.Add(DGA.WorkStartsAt.LessOrEqualThan(DateTo.Value)); //   if (OnlyActive) predicate.Add(DGA.WorkState.EqualsTo(WorkState.Planned.ToString())); 
// - predicate.Add(DGA.FlowId.EqualsTo(WorksFlowId)); // predicate.Add(DGA.DogovorOfWorkID.EqualsTo(CurrentDocument.Id)); // if (DateFrom != null) predicate.Add(DGA.WorkEndsAt.MoreOrEqualThan(DateFrom.Value)); if (DateTo != null) predicate.Add(DGA.WorkStartsAt.LessOrEqualThan(DateTo.Value)); // if (OnlyActive) predicate.Add(DGA.WorkState.EqualsTo(WorkState.Planned.ToString()));


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

рд╣рдо рдЧрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рдЗрд╕рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдПрдХ рдЦреЛрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ред рдЦреЛрдЬ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо (рдЗрд╕рдореЗрдВ рд╣рд╛рд░реНрдб-рдЯреВ-рд░реАрдб XPath- рдЬреИрд╕рд╛ рд▓реБрдХ рд╣реИ) рд╡рд┐рд╡рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:

 public enum DGA { [Description("doc_RegCard/rc_Index/date__")] RegDate, [Description("doc_RegCard/rc_Index/text__")] RegNum, [Description("doc_RegCard/rc_Index/text___")] Manager, [Description("doc_RegCard/rc_FlowKey")] FlowId, [Description("doc_RegCard/rc_Index/text__")] Title, [Description("doc_RegCard/rc_Index/text__")] Subject, ... } 
public enum DGA { [Description("doc_RegCard/rc_Index/date__")] RegDate, [Description("doc_RegCard/rc_Index/text__")] RegNum, [Description("doc_RegCard/rc_Index/text___")] Manager, [Description("doc_RegCard/rc_FlowKey")] FlowId, [Description("doc_RegCard/rc_Index/text__")] Title, [Description("doc_RegCard/rc_Index/text__")] Subject, ... }


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

 public static string LessOrEqualThan(this DGA attrib, DateTime val) { return attrib.LessOrEqualThan(System.Xml.XmlConvert .ToString(val, System.Xml.XmlDateTimeSerializationMode.Unspecified)); } public static string LessOrEqualThan(this DGA attrib, string val) { return String.Format("{0} <= '{1}'", attrib.GetAttribName(), val); } public static string InList(this DGA attrib, IEnumerable<string> values) { return String.Format("{0} in list({1})", attrib.GetAttribName(), values .Select(x => "'" + x + "'") .Aggregate((x, y) => x + ", " + y)); } 
public static string LessOrEqualThan(this DGA attrib, DateTime val) { return attrib.LessOrEqualThan(System.Xml.XmlConvert .ToString(val, System.Xml.XmlDateTimeSerializationMode.Unspecified)); } public static string LessOrEqualThan(this DGA attrib, string val) { return String.Format("{0} <= '{1}'", attrib.GetAttribName(), val); } public static string InList(this DGA attrib, IEnumerable<string> values) { return String.Format("{0} in list({1})", attrib.GetAttribName(), values .Select(x => "'" + x + "'") .Aggregate((x, y) => x + ", " + y)); }


рдЦреИрд░, рдФрд░ рдПрдХ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ - рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ:

 public static class DGAExt { public static string GetAttribName(this DGA attrib) { if (_dgaNames != null) return _dgaNames[attrib]; return EnumHelper.GetDescription(attrib); } } public static class EnumHelper { /// <summary> /// Retrieve the description on the enum, eg /// [Description("Bright Pink")] /// BrightPink = 2, /// Then when you pass in the enum, it will retrieve the description /// </summary> /// <param name="en">The Enumeration</param> /// <returns>A string representing the friendly name</returns> public static string GetDescription(Enum en) { var desc = GetAttribute<DescriptionAttribute>(en); if (desc != null) return desc.Description; return en.ToString(); } public static T GetAttribute<T>(Enum en) where T : System.Attribute { Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString()); if (memInfo.Length > 0) { var attrs = memInfo[0].GetCustomAttributes(typeof(T), false).Cast<T>(); return attrs.FirstOrDefault(); } return null; } } 
public static class DGAExt { public static string GetAttribName(this DGA attrib) { if (_dgaNames != null) return _dgaNames[attrib]; return EnumHelper.GetDescription(attrib); } } public static class EnumHelper { /// <summary> /// Retrieve the description on the enum, eg /// [Description("Bright Pink")] /// BrightPink = 2, /// Then when you pass in the enum, it will retrieve the description /// </summary> /// <param name="en">The Enumeration</param> /// <returns>A string representing the friendly name</returns> public static string GetDescription(Enum en) { var desc = GetAttribute<DescriptionAttribute>(en); if (desc != null) return desc.Description; return en.ToString(); } public static T GetAttribute<T>(Enum en) where T : System.Attribute { Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString()); if (memInfo.Length > 0) { var attrs = memInfo[0].GetCustomAttributes(typeof(T), false).Cast<T>(); return attrs.FirstOrDefault(); } return null; } }


рдирд┐рд╖реНрдХрд░реНрд╖



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

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


All Articles