我不確定要了解您的要求。
我想找到的接口(和實現)僅在從註冊表基礎派生類中使用:通過任何類型的使用下面的查詢相匹配的應用程序接口和類,從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
順便說一句,Microsoft.Win32.Registry
是密封的,所以它不是你所談論的類。但是你可以用你自己的類名替換它,前面加上名字空間。
感謝您的回覆!這不正是我所需要的:上面的例子給我所有使用我的註冊表基類型的類型。但我需要知道註冊表中使用的僅**的代碼。你明白我的意思嗎?提前致謝! – core
*僅用於註冊表中的代碼*是指.NET Fx類中使用的代碼* Microsoft.Win32.Registry *和* Microsoft.Win32.Registry *中使用的類以及...和等等?或者你的意思是在註冊表中訪問的密鑰? –
你好。不,我的意思是在StructureMap.Configuration.DSL.Registry的類型中使用的代碼。它用於配置我們的依賴注入容器。我的目標是找到僅在這些類中使用的類型和接口,並且不會在我們的代碼庫中找到其他位置。這意味着找到的類型只是註冊但沒有使用,所以它是可以被刪除的死代碼。 由於我們使用的是依賴注入和TDD,所以很難找到死代碼,因爲至少通過測試類和注入DI容器來使用代碼,如上所述。謝謝! – core