1

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クエリの構文に非常に慣れていません。だからいくつかのヒントは大いに役立つでしょう:)

ありがとう!

4

1 に答える 1

1

このクエリを試すことができます。このクエリでは、型ごとtに、コード内でインスタンス化されたすべての型が一覧表示されますt(つまり、型は、そのコンストラクターの 1 つが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 }

結果は次のようになります。

インスタンス化された型

于 2013-01-22T10:12:04.853 に答える