VS2015用のコードスニペット。 soi 氏のコードを.NET4.6.2以降に対応するよう修正したもの。

Format
XML
Post date
2016-08-16 23:32
Zeitraum der Veröffentlichung
Unbegrenzt
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <CodeSnippets
  3. xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  4. <CodeSnippet Format="1.0.0">
  5. <Header>
  6. <Title>Attribute and Getter</Title>
  7. <Author>soi, くまかみ工房</Author>
  8. <Shortcut>attrg</Shortcut>
  9. </Header>
  10. <Snippet>
  11. <Declarations>
  12. <Literal>
  13. <ID>name</ID>
  14. <ToolTip>属性の名前</ToolTip>
  15. <Default>属性名</Default>
  16. </Literal>
  17. <Literal>
  18. <ID>type</ID>
  19. <ToolTip>属性の型</ToolTip>
  20. <Default>string</Default>
  21. </Literal>
  22. <Literal>
  23. <ID>enumType</ID>
  24. <ToolTip>属性を付与するenumの型</ToolTip>
  25. <Default>Enum</Default>
  26. </Literal>
  27. <Literal>
  28. <ID>defaultValue</ID>
  29. <ToolTip>属性が定義されていなかった場合の値</ToolTip>
  30. <Default>value.ToString()</Default>
  31. </Literal>
  32. </Declarations>
  33. <Code Language="csharp">
  34. <![CDATA[[AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)]
  35. public sealed class $name$Attribute : Attribute
  36. {
  37. public $type$ $name$ { get; private set; }
  38. public $name$Attribute($type$ $name$)
  39. {
  40. this.$name$ = $name$;
  41. }
  42. }
  43. public static $type$ Get$name$(this $enumType$ value)
  44. {
  45. bool 既定値 = $defaultValue$;
  46. var valueType = value.GetType();
  47. var member = valueType.GetMember( Enum.GetName( valueType, value ) )[ 0 ]; // 必ずある;なければ例外
  48. var attribute = Attribute.GetCustomAttribute( member, typeof( $name$Attribute ) ) as $name$Attribute;
  49. return attribute?.$name$ ?? 既定値;
  50. }]]>
  51. </Code>
  52. </Snippet>
  53. </CodeSnippet>
  54. </CodeSnippets>
Download Printable view

URL of this paste

Embed with JavaScript

Embed with iframe

Raw text