나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다.
난 단지 레지스트리 기반에서 파생 클래스에 사용되는 인터페이스 (및 구현)를 찾으려면 : Microsoft.Win32.Registry
에서 파생 된 모든 유형에서 사용 다음 쿼리는 일치하는 응용 프로그램 인터페이스와 클래스 :
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
from t in Application.Types.UsedByAny(registryDerived)
select t
이전 쿼리에 일치
.. 그리고 다음 쿼리를 사용하면 파생 얻을 종류와 인터페이스의 구현 :
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
from t in Application.Types.UsedByAny(registryDerived)
let tDerived = t.DerivedTypes
let tImpl = t.TypesThatImplementMe
select new { t, tDerived, tImpl }
... 또는 그들 모두를 나열 :
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
let tUsed = Application.Types.UsedByAny(registryDerived)
let tDerived = tUsed.SelectMany(t => t.DerivedTypes)
let tImpl = tUsed.SelectMany(t => t.TypesThatImplementMe)
from t in tUsed.Union(tDerived).Union(tImpl)
select t
, BTW Microsoft.Win32.Registry
밀봉, 그래서 당신이 얘기 클래스가 아닙니다. 하지만 네임 스페이스 접두사가 붙은 자신의 클래스 이름으로 바꿀 수 있습니다. 이 쿼리는 어떤 우발적 사건을 포함하지 않습니다 :-) 내가 예상대로
// <Name>Interfaces registered but potentially not used</Name>
warnif count > 0
from t in JustMyCode.Types
from i in JustMyCode.Types
where t.DeriveFrom("StructureMap.Configuration.DSL.Registry")
&& i.IsInterface
&& t.IsUsing(i)
&& i.NbTypesUsingMe < 3 // one using for implementation, one in registry
select i
하지 많은 코드를하지만은 다음과 같습니다
답장을 보내 주셔서 감사합니다. 그게 정확히 내가 원하는 건 아니에요 : 위의 예제는 내 레지스트리 기본 유형에서 사용되는 모든 유형을 제공합니다. 그러나 ** 레지스트리에서 ** 사용되는 ** 코드를 알아야합니다. 무슨 뜻인지 알 겠어? 미리 감사드립니다! – core
* 레지스트리에서만 사용되는 코드 * .NET Fx 클래스에서 사용되는 코드 * Microsoft.Win32.Registry * 및 * Microsoft.Win32.Registry *에서 사용되는 클래스 및 ... 및 ...에서 사용되는 클래스를 의미합니까? 곧? 아니면 레지스트리에서 액세스되는 키를 의미합니까? –
안녕하세요. 아니, StructureMap.Configuration.DSL.Registry의 유형에 사용되는 코드를 의미하는 것은 아닙니다. 의존성 주입 컨테이너의 구성을위한 것입니다. 내 목표는 이러한 클래스에서만 사용되는 유형 및 인터페이스를 코드베이스의 다른 위치에서 찾지 않는 것입니다. 이는 발견 된 유형이 등록되었지만 사용되지 않았 음을 의미하므로 올바르게 삭제 될 수있는 불필요한 코드입니다. 의존성 삽입과 TDD를 사용하고 있기 때문에 코드는 적어도 테스트 클래스와 DI 컨테이너에 대한 등록에 사용되기 때문에 죽은 코드를 찾기가 어렵습니다. 감사! – core