Запрос, который считает новые операторы

Я пытаюсь создать другой пользовательский запрос с NDepend, но не могу понять это.

Вот в псевдокоде, что я хотел бы запросить:

var list
foreach type t
    int newCount = 0
    foreach type u in t.TypesUsed
        if "new"-operator of u is called anywhere within t
            newCount++;
    end foreach
    list.Add( new Tuple<Type, int>(t, newCount) )
end foreach
return list    

Я хотел бы знать, сколько раз "новый"-оператор вызывается где-либо внутри типа.

Я очень плохо знаком с синтаксисом запросов NDepend. Так что некоторые подсказки очень помогут:)

Спасибо!

1 ответ

Решение

Вы можете попробовать этот запрос, который перечисляет для каждого типа tВсе экземпляры создаются в коде t (то есть тип создается, когда один из его конструктора вызывается через new оператор).

from t in JustMyCode.Types
let typesInstantiated = from tUsed in t.TypesUsed 
                        where tUsed.Constructors.Any(c => c.IsUsedBy(t))
                        select tUsed
where typesInstantiated.Count() > 0
select new { t, typesInstantiated }

Результат выглядит так:

Типы экземпляров

Другие вопросы по тегам