Создание динамического описания Description класса DescriptionAttribute пространства имен System.ComponentModel - C#

Узнай цену своей работы

Формулировка задачи:

Свойство public virtual string Description { get; } имеет дело только со статическими переменными. Я использую компонент DevExpress.XtraVerticalGrid.propertyDescriptionControl для отображения свойств некой таблицы DevExpress.XtraVerticalGrid.PropertyGridControl. Описания свойств этих полей могут меняться в зависимости от некого флага (в свойстве он проверяется). Подскажите, пожалуйста, как мне передать в св-во Description динамическую переменную. Вычитал где-то что начать с такого нужно, но как это все вывести на DevExpress.XtraVerticalGrid.PropertyGridControl. не знаю.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace DynamicProperties
  5. {
  6. /// <summary>
  7. /// Abstract class for all dynamic properties.
  8. /// </summary>
  9. public abstract class DynamicProperty<T>
  10. {
  11. // public methods...
  12. /// <summary>
  13. /// Gets value of child property with the given name.
  14. /// </summary>
  15. /// <typeparam name="TValue">The value type of dynamic property.</typeparam>
  16. /// <param name="name">The name of the property to get.</param>
  17. public abstract TValue GetValue<TValue>(string name);
  18. /// <summary>
  19. /// Sets value of child property with the given name.
  20. /// </summary>
  21. /// <typeparam name="TValue">The value type of dynamic property.</typeparam>
  22. /// <param name="name">The name of the property to get.</param>
  23. /// <param name="value">The value to set.</param>
  24. public abstract void SetValue<TValue>(string name, TValue value);
  25. // public properties...
  26. /// <summary>
  27. /// Gets or sets value of this property.
  28. /// </summary>
  29. public abstract T Value
  30. {
  31. get;
  32. set;
  33. }
  34. }
  35. }
  36. using System;
  37. using System.Collections.Generic;
  38. using System.Text;
  39. namespace DynamicProperties
  40. {
  41. /// <summary>
  42. /// Simple dynamic property.
  43. /// </summary>
  44. public class SimpleProperty<T> : DynamicProperty<T>
  45. {
  46. T _value;
  47. // constructors...
  48. public SimpleProperty(T value)
  49. {
  50. _value = value;
  51. }
  52. // public methods...
  53. public override TValue GetValue<TValue>(string name)
  54. {
  55. throw new InvalidOperationException("Can't get property value from SimpleProperty instance.");
  56. }
  57. public override void SetValue<TValue>(string name, TValue value)
  58. {
  59. throw new InvalidOperationException("Can't set property value in SimpleProperty instance.");
  60. }
  61. public override bool HasProperty(string name)
  62. {
  63. return false;
  64. }
  65. public override void AddProperty<TValue>(string name, DynamicProperty<TValue> property)
  66. {
  67. throw new InvalidOperationException("Can't add child properties to SimpleProperty instance.");
  68. }
  69. public override void RemoveProperty(string name)
  70. {
  71. throw new InvalidOperationException("Can't remove child properties from SimpleProperty instance.");
  72. }
  73. public override DynamicProperty<TValue> GetProperty<TValue>(string name)
  74. {
  75. throw new InvalidOperationException("Can't get child properties from SimpleProperty instance.");
  76. }
  77. // public properties...
  78. public override T Value
  79. {
  80. get { return _value; }
  81. set { _value = value; }
  82. }
  83. }
  84. }
  85.  
  86. using System.ComponentModel;
  87. using DynamicProperties;
  88. class RowProperties
  89. {
  90. DynamicProperty<string> stringProperty = new SimpleProperty<string>("StringValue");
  91.  
  92. [Description(" Текст, который нужно изменить в ходе программы")]
  93. public string F_ACCOUNTBORG
  94. {
  95. get { return ("Что-то"); }
  96. }
  97. // и где-то нужно дописать
  98. DynamicProperty<string> stringProperty = new SimpleProperty<string>("StringValue");
  99. stringProperty.Value = "Нужное значение";
  100. Console.WriteLine("String property value: {0}", stringProperty.Value);
  101. // Но Console мне не нужен мне нужно это передать как-то в Description класса DescriptionAttribute!!!!!!!!!

Решение задачи: «Создание динамического описания Description класса DescriptionAttribute пространства имен System.ComponentModel»

textual
Листинг программы
  1. public class Test
  2.     {
  3.         [DescriptionTest("bla")]
  4.         public string Value { get; set; }
  5.     }
  6.  
  7.     public static class Setting
  8.     {
  9.         public static bool IsValue { get; set; }
  10.     }
  11.  
  12.     public class DescriptionTest : DescriptionAttribute
  13.     {
  14.         public DescriptionTest(string description) : base(description)
  15.         {
  16.         }
  17.  
  18.         public override string Description
  19.         {
  20.             get
  21.             {
  22.                 if (Setting.IsValue)
  23.                     return "Bla-bla";
  24.                 return "Qwerty";
  25.             }
  26.         }
  27.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы