Создание динамического описания 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"; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д