DebuggerVisualizerAttribute.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. // See the LICENSE file in the project root for more information.
  4. namespace System.Diagnostics
  5. {
  6. /// <summary>
  7. /// Signifies that the attributed type has a visualizer which is pointed
  8. /// to by the parameter type name strings.
  9. /// </summary>
  10. [AttributeUsage(AttributeTargets.Struct | AttributeTargets.Class | AttributeTargets.Assembly, AllowMultiple = true)]
  11. public sealed class DebuggerVisualizerAttribute : Attribute
  12. {
  13. private Type _target;
  14. public DebuggerVisualizerAttribute(string visualizerTypeName)
  15. {
  16. VisualizerTypeName = visualizerTypeName;
  17. }
  18. public DebuggerVisualizerAttribute(string visualizerTypeName, string visualizerObjectSourceTypeName)
  19. {
  20. VisualizerTypeName = visualizerTypeName;
  21. VisualizerObjectSourceTypeName = visualizerObjectSourceTypeName;
  22. }
  23. public DebuggerVisualizerAttribute(string visualizerTypeName, Type visualizerObjectSource)
  24. {
  25. if (visualizerObjectSource == null)
  26. {
  27. throw new ArgumentNullException(nameof(visualizerObjectSource));
  28. }
  29. VisualizerTypeName = visualizerTypeName;
  30. VisualizerObjectSourceTypeName = visualizerObjectSource.AssemblyQualifiedName;
  31. }
  32. public DebuggerVisualizerAttribute(Type visualizer)
  33. {
  34. if (visualizer == null)
  35. {
  36. throw new ArgumentNullException(nameof(visualizer));
  37. }
  38. VisualizerTypeName = visualizer.AssemblyQualifiedName;
  39. }
  40. public DebuggerVisualizerAttribute(Type visualizer, Type visualizerObjectSource)
  41. {
  42. if (visualizer == null)
  43. {
  44. throw new ArgumentNullException(nameof(visualizer));
  45. }
  46. if (visualizerObjectSource == null)
  47. {
  48. throw new ArgumentNullException(nameof(visualizerObjectSource));
  49. }
  50. VisualizerTypeName = visualizer.AssemblyQualifiedName;
  51. VisualizerObjectSourceTypeName = visualizerObjectSource.AssemblyQualifiedName;
  52. }
  53. public DebuggerVisualizerAttribute(Type visualizer, string visualizerObjectSourceTypeName)
  54. {
  55. if (visualizer == null)
  56. {
  57. throw new ArgumentNullException(nameof(visualizer));
  58. }
  59. VisualizerTypeName = visualizer.AssemblyQualifiedName;
  60. VisualizerObjectSourceTypeName = visualizerObjectSourceTypeName;
  61. }
  62. public string VisualizerObjectSourceTypeName { get; }
  63. public string VisualizerTypeName { get; }
  64. public string Description { get; set; }
  65. public Type Target
  66. {
  67. get => _target;
  68. set
  69. {
  70. if (value == null)
  71. {
  72. throw new ArgumentNullException(nameof(value));
  73. }
  74. TargetTypeName = value.AssemblyQualifiedName;
  75. _target = value;
  76. }
  77. }
  78. public string TargetTypeName { get; set; }
  79. }
  80. }