code_junkie

Internal global property..bad smell?

Nov 12th, 2011
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. public class MapinfoWrapper
  2. {
  3. public MapinfoWrapper()
  4. {
  5. Publics.InternalMapinfo = new MapinfoWrapper();
  6. }
  7.  
  8. public void Do(string cmd)
  9. {
  10. //Call COM do command
  11. }
  12.  
  13. public string Eval(string cmd)
  14. {
  15. //Return value from COM eval command
  16. }
  17. }
  18.  
  19. internal static class Publics
  20. {
  21. private static MapinfoWrapper _internalwrapper;
  22. internal static MapinfoWrapper InternalMapinfo
  23. {
  24. get
  25. {
  26. return _internalwrapper;
  27. }
  28. set
  29. {
  30. _internalwrapper = value;
  31. }
  32. }
  33. }
  34.  
  35. public class TableInfo
  36. {
  37. public string Name {
  38. get { return Publics.InternalMapinfo.Eval("String comman to get the name"); }
  39. set { Publics.InternalMapinfo.Do("String command to set the name"); }
  40. }
  41. }
  42.  
  43. public class TableInfo
  44. {
  45. private IMapinfoWrapper wrapper;
  46.  
  47. public TableInfo() : this(null) {}
  48.  
  49. public TableInfo( IMapinfoWrapper wrapper )
  50. {
  51. // use from cache if not supplied, could create new here
  52. this.wrapper = wrapper ?? Publics.InternalMapInfo;
  53. }
  54.  
  55. public string Name {
  56. get { return wrapper.Eval("String comman to get the name"); }
  57. set { wrapper.Do("String command to set the name"); }
  58. }
  59. }
  60.  
  61. public interface IMapinfoWrapper
  62. {
  63. void Do( string cmd );
  64. void Eval( string cmd );
  65. }
  66.  
  67. public class MapinfoWrapper
  68. {
  69. public MapinfoWrapper()
  70. {
  71. }
  72.  
  73. public void Do(string cmd)
  74. {
  75. //Call COM do command
  76. }
  77.  
  78. public string Eval(string cmd)
  79. {
  80. //Return value from COM eval command
  81. }
  82. }
  83.  
  84. internal static class Publics
  85. {
  86. private static MapinfoWrapper _internalwrapper;
  87. internal static MapinfoWrapper InternalMapinfo
  88. {
  89. get
  90. {
  91. if (_internalwrapper == null)
  92. {
  93. _internalwrapper = new MapinfoWrapper();
  94. }
  95. return _internalwrapper;
  96. }
  97. }
  98. }
  99.  
  100. [TestMethod]
  101. [ExpectedException(typeof(ApplicationException))]
  102. public void TestTableInfoName()
  103. {
  104. IMapinfoWrapper mockWrapper = new MockMapinfoWrapper();
  105. mockWrapper.ThrowDoException(typeof(ApplicationException));
  106.  
  107. TableInfo info = new TableInfo( mockWrapper );
  108. info.Do( "invalid command" );
  109. }
Add Comment
Please, Sign In to add comment