【发布时间】:2017-10-22 15:13:36
【问题描述】:
我正在尝试创建一个 CQLinq 查询,它将为我提供来自解决方案其余部分正在使用的特定程序集的所有类型和/或成员。
我需要此信息,以便我可以移动/重构所有引用的类型/成员,并最终从解决方案中删除特定程序集(以及对它的所有引用)。
【问题讨论】:
标签: ndepend
我正在尝试创建一个 CQLinq 查询,它将为我提供来自解决方案其余部分正在使用的特定程序集的所有类型和/或成员。
我需要此信息,以便我可以移动/重构所有引用的类型/成员,并最终从解决方案中删除特定程序集(以及对它的所有引用)。
【问题讨论】:
标签: ndepend
为了获得最佳结果呈现,查询可以如下所示:
let targets = Assemblies.WithName("SpecificAssemblyName").Single().ChildTypesAndMembers.ToHashSet()
let methodsUser = Application.Methods.UsingAny(targets)
let typesUser = Application.Types.UsingAny(targets)
from x in ((IEnumerable<IMember>)typesUser).Concat(methodsUser)
where !targets.Contains(x)
select new {
x,
called = x.IsMethod ? x.AsMethod.MethodsCalled.Intersect(targets).Concat(x.AsMethod.FieldsUsed.Intersect(targets)) :
x.AsType.TypesUsed.Intersect(targets)}
【讨论】: