Pergunta

Existe um lugar na lista de atributos comuns que são usados ??em objetos como Serializable?

Graças

Editar ~ A razão que eu pedi é que me deparei com um atributo StoredProcedure em ntiers ORMS.

Foi útil?

Solução

Sim, olhar MSDN tem coberto olhar por favor aqui .

EDIT: Este link única resposta sugado. Aqui é um extrator de trabalho para todos os tipos carregáveis ??(GAC) que têm Atributo no nome.

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

Outras dicas

Além disso, você pode criar seus próprios atributos. Se você estiver procurando por meio de código de outra pessoa, é fácil ficar confuso quando eles criam seu próprio.

Aqui está uma lista , mas não é completa. Existem mais de 200 atributos.

Eu não estou ciente de uma lista completa de atributos, mas uma busca de Atributo no MSDN pode produzir resultados interessantes. Eu tenho tendência para navegar namespaces para tipos de atributos interessantes e depois ir procurá-los para ver o que eu poderia usá-los para. Não a abordagem mais eficiente, eu sei.

A entrada MSDN para Sistema. atributo tem uma lista na parte inferior.

Você não pode encontrar o que você está procurando, porque é possível que você está olhando para um atributo personalizado.

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

Você pode usar o refletor para navegar na mscorlib montagem, e sob System.Attribute , expanda Tipos Derivados nó. Ela vai mostrar todos os atributos para todas as igrejas atualmente carregados no refletor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top