Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. using System;
  2. using System.Reflection;
  3. using System.Linq;
  4.  
  5. namespace Bar
  6. {
  7. static class Program
  8. {
  9. static void Main()
  10. {
  11. var a = Foo.GetConstStringValue<Fish>("Name");
  12. var b = Foo.GetConstStringValue<Cat>("Name");
  13. var c = Foo.GetConstStringValue<ImNotNamedHaha>("Name");
  14. }
  15.  
  16. static class Foo
  17. {
  18. public static string GetConstStringValue<T>(string constName)
  19. {
  20. var objType = typeof(T);
  21.  
  22. var constFields = objType.GetFields(BindingFlags.Static | BindingFlags.Public);
  23. var nameField = constFields.FirstOrDefault(x => string.Equals(x.Name, constName, StringComparison.Ordinal));
  24.  
  25. string name = null;
  26. if (nameField != null)
  27. {
  28. name = nameField.GetRawConstantValue() as string;
  29. }
  30.  
  31. // No name field, or value was empty
  32. if (string.IsNullOrWhiteSpace(name))
  33. {
  34. // Use name of type instead
  35. name = objType.Name;
  36. }
  37.  
  38. return name;
  39. }
  40. }
  41.  
  42. abstract class NamedEntity
  43. {
  44. // All people who derive from me really should
  45. // implement a "const string Name;" field. Plz.
  46. }
  47.  
  48. class Fish : NamedEntity
  49. {
  50. public const string Name = "Fishy the fish";
  51. }
  52.  
  53. class Cat : NamedEntity
  54. {
  55. public const string Name = "Whiskers";
  56. }
  57.  
  58. class ImNotNamedHaha : NamedEntity
  59. {
  60. // public static const Name = "You'll never name me!";
  61. }
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement