Pregunta

¿Hay alguna lista de atributos comunes que se usan en objetos como Serializable ?

Gracias

Editar ~ La razón por la que pregunté es que encontré un atributo de StoredProcedure en ntiers ORMS.

¿Fue útil?

Solución

Sí, mire msdn lo tiene cubierto, mire aquí .

EDITAR: Este enlace solo responde aspirada. Aquí hay un extractor de trabajo para todos los tipos cargables (gac) que tienen Atributo 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(<*>quot;Found {assemblyList.Count} assemblies");
            var currentItem = 1;


            foreach (var gacAssemblyInfo in assemblyList)
            {
                Console.SetCursorPosition(0, 2);
                Console.WriteLine(<*>quot;On {currentItem} of {assemblyList.Count} ");
                Console.SetCursorPosition(0, 3);
                Console.WriteLine(<*>quot;Loading {gacAssemblyInfo}");
                currentItem++;

                try
                {
                    var asm = Assembly.Load(gacAssemblyInfo);

                    foreach (Type t in asm.GetTypes())
                    {
                        if (t.Name.EndsWith("Attribute", StringComparison.OrdinalIgnoreCase))
                        {
                            collectedRecords.Add(<*>quot;{t.FullName} - {t.Assembly.FullName}");
                        }
                    }

                }
                catch (Exception ex)
                {
                    failedToLoad.Add(<*>quot;FAILED to load {gacAssemblyInfo} - {ex}");
                    Console.SetCursorPosition(1, 9);
                    Console.WriteLine(<*>quot;Failure to load count: {failedToLoad.Count}");
                    Console.SetCursorPosition(4, 10);
                    Console.WriteLine(<*>quot;Last Fail: {gacAssemblyInfo}");
                }
            }

            var fileBase = System.IO.Path.GetRandomFileName();
            var goodFile = <*>quot;{fileBase}_good.txt";
            var failFile = <*>quot;{fileBase}_failedToLoad.txt";
            System.IO.File.WriteAllLines(goodFile, collectedRecords);
            System.IO.File.WriteAllLines(failFile, failedToLoad);
            Console.SetCursorPosition(0, 15);
            Console.WriteLine(<*>quot;Matching types: {goodFile}");
            Console.WriteLine(<*>quot;Failures: {failFile}");
            Console.WriteLine("Press ENTER to exit");
            Console.ReadLine();
        }
    }
}

Otros consejos

Además, puedes crear tus propios atributos. Si está buscando a través del código de otra persona, es fácil confundirse cuando crean el suyo propio.

Aquí hay una lista , pero no está completa. Hay más de 200 atributos.

No conozco una lista completa de atributos, pero una búsqueda de atributo en MSDN puede producir resultados interesantes. He tendido a buscar espacios de nombres en busca de tipos de atributos interesantes y luego ir a buscarlos para ver para qué podría usarlos. No es el enfoque más eficiente, lo sé.

La entrada de MSDN para sistema. El atributo tiene una lista en la parte inferior.

Es posible que no encuentre lo que está buscando porque es posible que esté viendo un atributo personalizado.

http://www.code-magazine.com/Article.aspx ? quickid = 0307041

Puede usar Reflector para navegar por el conjunto mscorlib y, en System.Attribute , expanda Tipos derivados nodo. Mostrará todos los atributos de todos los ensamblajes actualmente cargados en Reflector.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top