Есть ли список где-то на общих атрибутах, которые используются в таких объектах, как Serializable
?Список атрибутов .NET
Благодаря
Редактировать ~ Поэтому я спросил, что я наткнулся атрибут StoredProcedure в ntiers ORMS.
Есть ли список где-то на общих атрибутах, которые используются в таких объектах, как Serializable
?Список атрибутов .NET
Благодаря
Редактировать ~ Поэтому я спросил, что я наткнулся атрибут StoredProcedure в ntiers ORMS.
Да, посмотрите, что у msdn вы были закрыты, пожалуйста, посмотрите here.
РЕДАКТИРОВАТЬ: Эта ссылка только ответ всасывается. Вот рабочий экстрактор для всех загружаемых типов (gac), которые имеют атрибут в имени.
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();
}
}
}
Here is a list, но это не полный. Есть более 200 атрибутов.
Я не знаю полного списка атрибутов, но поиск атрибута в MSDN может дать интересные результаты. Я имел тенденцию просматривать пространства имен для интересных типов атрибутов, а затем искать их, чтобы посмотреть, для чего я могу их использовать. Я знаю, не самый эффективный подход.
Запись MSDN для System.Attribute имеет список внизу.
Возможно, вы не найдете то, что ищете, потому что возможно, что вы смотрите на пользовательский атрибут.
Кроме того, вы можете создавать свои собственные атрибуты. Если вы ищете чужой код, легко смутить, когда они создадут свои собственные.
Вы можете использовать отражатель для просмотра mscorlib
сборки, и под System.Attribute
, разверните Производные типы узел. Он отобразит все атрибуты для всех сборок, загруженных в Reflector.
Все, что я видел, это «Атрибуты, которые используются в таких объектах?» - Сообщение было лишено его сериализуемого атрибута. Я, хотя он спрашивал о nullables (? И ??) – StingyJack 2008-10-07 17:28:10
удалил комментарии и обновленный ответ, чтобы иметь точную информацию, как только недоразумение было устранено – 2008-10-07 17:28:32