Следующий метод C # перечисляет все типы IDisposable, найденные в определенной сборке. (Используемые пространства имен: System, System.Collections.Generic, System.IO, System.Reflection)
static void PrintDisposableTypesFromFile(String path)
{
Assembly assembly = Assembly.LoadFrom(path);
foreach (Type type in assembly.GetTypes())
if (type.GetInterface("IDisposable") != null)
Console.WriteLine(type.FullName);
}
В следующем методе C # используется предыдущий, чтобы сделать то же самое для всех сборок в каталоге и его подкаталогах, например, "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727":
static void PrintDisposableTypesFromDirectory(DirectoryInfo dir, bool warn)
{
foreach (FileInfo file in dir.GetFiles("*.dll"))
{
try
{
PrintDisposableTypesFromFile(file.FullName);
}
catch (Exception ex)
{
if (warn)
{
Console.Error.WriteLine(
String.Format(
"WARNING: Skipped {0}: {1}",
new object[] { file.FullName, ex.Message }));
}
}
}
// recurse
foreach (DirectoryInfo subdir in dir.GetDirectories())
PrintDisposableTypesFromDirectory(subdir, warn);
}
Я не уверен, что список всех одноразовых изделий очень полезен, но я использовал похожий код, чтобы найти другие интересные вещи, такие как полный список кодировок текста, поддерживаемых .NET Framework.