Вопрос по c#, properties, browsable, attributes – Динамические атрибуты C #

3

Есть ли способ сделать следующее? яувидеть что Аргументы Атрибутов должны быть постоянным выражением, так как бы мне обойти это? Если я не хочу загружатьsome свойства в datagridview с использованием привязки, какова следующая лучшая альтернатива?

  class TestObj
  {
     private bool isBrowsable = false;

     [Browsable(isBrowsable)]
     public string String1
     {
        get
        {
           return "Foo";
        }
     }
     [Browsable(isBrowsable)]
     public string String2
     {
        get
        {
           return "Baz";
        }
     }
  }
Вы хотите решить это во время компиляции или во время выполнения? lc.
Время выполнения, если это возможно SwDevMan81

Ваш Ответ

3   ответа
6

х во время выполнения, реализовавICustomTypeDescriptor интерфейс - но это довольно трудоемкая работа, не такая простая, как оформление свойств атрибутами.

Вот пример, который использует интерфейс для локализации сетки.codeguru.com/csharp/csharp/cs_controls/propertygrid/article.php/…
У вас есть быстрый пример этого или сайт, который показывает, как это сделать? Спасибо SwDevMan81
0

данных, используя подход, аналогичный Как установить динамическое значение в моем атрибуте передавая имена классов и свойств, например,

[IsBrowsable ("имя класса", "имя свойства")]

Однако будет неудобно печатать в виде строковых имен, которые очевидны и каким-то образом должны быть в состоянии определиться из отражения. Вы можете попробовать нам инструменты IL Weaver, такие как PostSharp или Fody. (Я верю, что они способны на такое, но сейчас у нас нет примера) & # x2611;

3

я думаю, что вы, вероятно, смотрите на ICustomTypeDescriptor. Если бы это было решение во время компиляции, вы могли бы использовать директивы компилятора:


 #define ISBROWSABLE
 #if ISBROWSABLE
 [your attribute]
 #endif

Похожие вопросы