CustomAttributes не возвращаются из ожидаемого - PullRequest
0 голосов
/ 10 июля 2009

У меня есть что-то похожее на следующее:

[CoolnessFactor]
interface IThing {}

class Tester
{
    static void TestSomeInterfaceStuff<T>()
    {
        var attributes = from attribute 
                        in typeof(T).GetCustomAttributes(typeof(T), true)
                        where attributes == typeof(CoolnessFactorAttribute)
                        select attribute;
        //do some stuff here
    }
}

и тогда я бы назвал это так:

TestSomeInterfaceStuff<IThing>();

Однако, когда я делаю это, он вообще не возвращает никаких атрибутов.

Мысли

1 Ответ

5 голосов
/ 10 июля 2009

Строка "in" нуждается в настройке. Следует читать

in typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute), true)

Тип, передаваемый в метод GetCustomAttributes, определяет тип искомых атрибутов. Это также означает следующее, где пункт не нужен и может быть удален.

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

var attributes = 
  typeof(T).GetCustomAttributes(typeof(CoolnessFactorAttribute),true)
  .Cast<CoolnessFactorAttribute>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...