2008-10-07 24 views
11

¿Hay alguna lista en alguna parte de los atributos comunes que se usan en objetos como Serializable?.NET Lista de atributos

Gracias

Editar ~ La razón por la que pedí es que me encontré con un atributo StoredProcedure en ntiers ORMS.

Respuesta

11

Sí, mire msdn tiene cubierto por favor mire here.

EDITAR: Esta única respuesta de enlace es una mierda. Aquí hay un extractor de trabajo para todos los tipos cargables (gac) que tienen Attribute en el nombre.

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(); 
     } 
    } 
} 
+0

Todo lo que vi fue "Atributos que se usan en objetos como?" - La publicación ha sido despojada de su atributo serializable. Pensé que estaba preguntando sobre nullables (? Y ??) – StingyJack

+0

eliminado los comentarios y la respuesta actualizada para tener información precisa una vez que se aclararon los malentendidos –

2

Here is a list, pero no está completo. Hay más de 200 atributos.

+0

Me encontré con esto antes. Me preguntaba si hay una lista completa. –

2

No conozco una lista completa de Atributos, pero una búsqueda de Atributo en MSDN puede arrojar resultados interesantes. He tendido a buscar espacios de nombres para tipos de atributos interesantes y luego buscarlos para ver para qué los puedo usar. No es el enfoque más eficiente, lo sé.

La entrada de MSDN para System.Attribute tiene una lista en la parte inferior.

3

Además, puede crear sus propios atributos. Si está buscando el código de otra persona, es fácil confundirse cuando crean el suyo propio.

1

Usted puede utilizar el reflector para navegar por la Asamblea mscorlib, y bajo System.Attribute, ampliar los tipos derivados nodo. Mostrará todos los atributos para todos los ensamblados actualmente cargados en Reflector.

Cuestiones relacionadas