Question

Existe-t-il une liste quelque part sur les attributs communs utilisés dans des objets tels que Serializable ?

Merci

Éditer ~ La raison de ma demande est que je suis tombé sur un attribut StoredProcedure dans ntiers ORMS.

Était-ce utile?

La solution

Oui, regardez msdn a couvert, merci de regarder ici .

EDIT: Ce lien ne répond que sucé. Voici un extracteur fonctionnel pour tous les types chargeables (gac) qui ont un attribut dans le nom.

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

Autres conseils

De plus, vous pouvez créer vos propres attributs. Si vous effectuez une recherche dans le code d’une autre personne, il est facile d’être dérouté lorsqu’il crée son propre code.

Voici une liste , mais elle n'est pas complète. Il y a plus de 200 attributs.

Je ne connais pas une liste complète d'attributs, mais une recherche d'attribut dans MSDN peut donner des résultats intéressants. J'ai eu tendance à parcourir les espaces de noms pour trouver des types d'attributs intéressants, puis à les rechercher pour voir ce que je pourrais les utiliser. Ce n’est pas l’approche la plus efficace, je le sais.

L'entrée MSDN de Système. L'attribut a une liste en bas.

Il est possible que vous ne trouviez pas ce que vous cherchez car il est possible que vous recherchiez un attribut personnalisé.

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

Vous pouvez utiliser Reflector pour parcourir l'assembly mscorlib et sous System.Attribute , développez les types dérivés noeud. Il montrera tous les attributs de tous les assemblys actuellement chargés dans Reflector.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top