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

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

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

Свойство public virtual string Description { get; } имеет дело только со статическими переменными. Я использую компонент DevExpress.XtraVerticalGrid.propertyDescriptionControl для отображения свойств некой таблицы DevExpress.XtraVerticalGrid.PropertyGridControl. Описания свойств этих полей могут меняться в зависимости от некого флага (в свойстве он проверяется). Подскажите, пожалуйста, как мне передать в св-во Description динамическую переменную. Вычитал где-то что начать с такого нужно, но как это все вывести на DevExpress.XtraVerticalGrid.PropertyGridControl. не знаю.
using System;
using System.Collections.Generic;
using System.Text;
 
namespace DynamicProperties
{
  /// <summary>
  /// Abstract class for all dynamic properties.
  /// </summary>
  public abstract class DynamicProperty<T>
  {
    // public methods...
    /// <summary>
    /// Gets value of child property with the given name.
    /// </summary>
    /// <typeparam name="TValue">The value type of dynamic property.</typeparam>
    /// <param name="name">The name of the property to get.</param>
    public abstract TValue GetValue<TValue>(string name);
 
    /// <summary>
    /// Sets value of child property with the given name.
    /// </summary>
    /// <typeparam name="TValue">The value type of dynamic property.</typeparam>
    /// <param name="name">The name of the property to get.</param>
    /// <param name="value">The value to set.</param>
    public abstract void SetValue<TValue>(string name, TValue value);
 
    // public properties...
    /// <summary>
    /// Gets or sets value of this property.
    /// </summary>
    public abstract T Value
    {
      get;
      set;
    }
  }
}
 
using System;
using System.Collections.Generic;
using System.Text;
 
namespace DynamicProperties
{
  /// <summary>
  /// Simple dynamic property.
  /// </summary>
  public class SimpleProperty<T> : DynamicProperty<T>
  {
    T _value;
 
    // constructors...
    public SimpleProperty(T value)
    {
      _value = value;
    }
 
    // public methods...
    public override TValue GetValue<TValue>(string name)
    {
        
     throw new InvalidOperationException("Can't get property value from SimpleProperty instance.");
    }
    public override void SetValue<TValue>(string name, TValue value)
    {
      throw new InvalidOperationException("Can't set property value in SimpleProperty instance.");
    }
    public override bool HasProperty(string name)
    {
      return false;
    }
    public override void AddProperty<TValue>(string name, DynamicProperty<TValue> property)
    {
      throw new InvalidOperationException("Can't add child properties to SimpleProperty instance.");
    }
    public override void RemoveProperty(string name)
    {
      throw new InvalidOperationException("Can't remove child properties from SimpleProperty instance.");
    }
    public override DynamicProperty<TValue> GetProperty<TValue>(string name)
    {
      throw new InvalidOperationException("Can't get child properties from SimpleProperty instance.");
    }
 
    // public properties...
    public override T Value
    {
      get { return _value; }
      set { _value = value; }
    }
  }
}

using System.ComponentModel;
using DynamicProperties;
class RowProperties
    {
        DynamicProperty<string> stringProperty = new SimpleProperty<string>("StringValue");

    [Description(" Текст, который нужно изменить в ходе программы")]
         public string F_ACCOUNTBORG
        {
            get { return ("Что-то"); }
        }
 
  // и где-то нужно дописать
             DynamicProperty<string> stringProperty = new SimpleProperty<string>("StringValue");
              stringProperty.Value = "Нужное значение";
              Console.WriteLine("String property value: {0}", stringProperty.Value); 
// Но  Console мне не нужен мне нужно это передать как-то в Description класса DescriptionAttribute!!!!!!!!!

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

textual
Листинг программы
public class Test
    {
        [DescriptionTest("bla")]
        public string Value { get; set; }
    }
 
    public static class Setting
    {
        public static bool IsValue { get; set; }
    }
 
    public class DescriptionTest : DescriptionAttribute
    {
        public DescriptionTest(string description) : base(description)
        {
        }
 
        public override string Description
        {
            get
            {
                if (Setting.IsValue)
                    return "Bla-bla";
                return "Qwerty";
            }
        }
    }

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


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

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

14   голосов , оценка 3.714 из 5
Похожие ответы