Q
.NET屬性列表
11
A
回答
11
是的,看看msdn你有沒有覆蓋請看here。
編輯:此鏈接只回答吸。這是所有可加載類型(gac)的名稱中都有Attribute的工作提取器。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var process = new Process();
//your path may vary
process.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.Arguments = "/l";
process.Start();
var consoleOutput = process.StandardOutput;
var assemblyList = new List<string>();
var startAdding = false;
while (consoleOutput.EndOfStream == false)
{
var line = consoleOutput.ReadLine();
if (line.IndexOf("The Global Assembly Cache contains the following assemblies", StringComparison.OrdinalIgnoreCase) >= 0)
{
startAdding = true;
continue;
}
if (startAdding == false)
{
continue;
}
//add any other filter conditions (framework version, etc)
if (line.IndexOf("System.", StringComparison.OrdinalIgnoreCase) < 0)
{
continue;
}
assemblyList.Add(line.Trim());
}
var collectedRecords = new List<string>();
var failedToLoad = new List<string>();
Console.WriteLine($"Found {assemblyList.Count} assemblies");
var currentItem = 1;
foreach (var gacAssemblyInfo in assemblyList)
{
Console.SetCursorPosition(0, 2);
Console.WriteLine($"On {currentItem} of {assemblyList.Count} ");
Console.SetCursorPosition(0, 3);
Console.WriteLine($"Loading {gacAssemblyInfo}");
currentItem++;
try
{
var asm = Assembly.Load(gacAssemblyInfo);
foreach (Type t in asm.GetTypes())
{
if (t.Name.EndsWith("Attribute", StringComparison.OrdinalIgnoreCase))
{
collectedRecords.Add($"{t.FullName} - {t.Assembly.FullName}");
}
}
}
catch (Exception ex)
{
failedToLoad.Add($"FAILED to load {gacAssemblyInfo} - {ex}");
Console.SetCursorPosition(1, 9);
Console.WriteLine($"Failure to load count: {failedToLoad.Count}");
Console.SetCursorPosition(4, 10);
Console.WriteLine($"Last Fail: {gacAssemblyInfo}");
}
}
var fileBase = System.IO.Path.GetRandomFileName();
var goodFile = $"{fileBase}_good.txt";
var failFile = $"{fileBase}_failedToLoad.txt";
System.IO.File.WriteAllLines(goodFile, collectedRecords);
System.IO.File.WriteAllLines(failFile, failedToLoad);
Console.SetCursorPosition(0, 15);
Console.WriteLine($"Matching types: {goodFile}");
Console.WriteLine($"Failures: {failFile}");
Console.WriteLine("Press ENTER to exit");
Console.ReadLine();
}
}
}
2
Here is a list,但它不完整。有超過200個屬性。
2
我不知道屬性的完整列表,但在MSDN中搜索屬性可以產生有趣的結果。我傾向於瀏覽有趣的屬性類型的名稱空間,然後去查看它們,看看我可以使用它們。我知道不是最有效的方法。
System.Attribute的MSDN條目在底部有一個列表。
1
您可能無法找到您要查找的內容,因爲您可能正在查看自定義屬性。
3
此外,還可以創建自己的屬性。如果您正在通過其他人的代碼進行搜索,那麼創建自己的代碼時很容易感到困惑。
1
您可以使用反射來瀏覽mscorlib
組裝,並在System.Attribute
,擴大派生類型節點。它將顯示當前在Reflector中加載的所有程序集的所有屬性。
相關問題
- 1. 可序列化屬性.NET
- 2. .net和屬性屬性
- 3. HttpBrowserCapabilities.Crawler屬性.NET
- 4. 屬性在.NET
- 5. .NET屬性
- 6. 具有關係表屬性的下拉列表[MVC .NET]
- 7. 在列表屬性
- 8. kAB ***屬性列表?
- 9. mso屬性列表
- 10. PropertyGrid屬性列表
- 11. 列表屬性html5
- 12. Maven屬性列表
- 13. 列表/ Properties(屬性)
- 14. 列表 - .NET兼容性?
- 15. 屬性文件中的屬性列表
- 16. 如何獲取屬性屬性列表?
- 17. Protobuf-net - 僅序列化幾個屬性
- 18. protobuf-net沒有屬性的序列化
- 19. .NET XML序列化的可選屬性
- 20. ASP NET屬性路由陣列
- 21. .NET WinForms錨屬性
- 22. .net方法屬性
- 23. .NET:獲取屬性名稱屬性
- 24. Dapper .Net:表列和模型屬性類型不匹配
- 25. 覆蓋列表框中的itemsource屬性c#.net
- 26. 將類屬性映射到表中的通用列.NET
- 27. .NET MVC Html幫助器顯示列表<model>屬性
- 28. 春天MVC列表屬性
- 29. UIPickerView數據(屬性列表)
- 30. 檢查屬性列表
我所看到的只是「用在像對象中的屬性?」 - 該帖子被剝奪了其可序列化屬性。我雖然他問的是可空數(?和??) – StingyJack 2008-10-07 17:28:10
刪除了評論和更新的答案,一旦誤解被清除,準確的信息 – 2008-10-07 17:28:32