Динамические атрибуты C #

Есть ли способ сделать следующее? яувидеть что Аргументы Атрибутов должны быть постоянным выражением, так как бы мне обойти это? Если я не хочу загружать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.07 июл. 2009 г., 18:54
Вы хотите решить это во время компиляции или во время выполнения?
 SwDevMan8107 июл. 2009 г., 19:07
Время выполнения, если это возможно

Ответы на вопрос(3)

Решение Вопроса

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

 07 июл. 2009 г., 19:22
Вот пример, который использует интерфейс для локализации сетки.codeguru.com/csharp/csharp/cs_controls/propertygrid/article.php/…
 07 июл. 2009 г., 19:26
 SwDevMan8107 июл. 2009 г., 19:11
У вас есть быстрый пример этого или сайт, который показывает, как это сделать? Спасибо

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

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

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

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


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

Ваш ответ на вопрос