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