Frage

Gibt es eine Liste irgendwo auf gemeinsame Attribute, die in Objekten wie Serializable verwendet werden?

Danke

Bearbeiten ~ Der Grund, warum ich gefragt ist, dass ich auf einem StoredProcedure Attribut kam in ntiers ORMS.

War es hilfreich?

Lösung

Ja, schauen Msdn hat für Sie schauen Sie bitte hier .

EDIT: Dieser Link ist nur gesaugt Antwort. Hier ist ein funktionierendes Extraktor für alle ladbaren Typen (GAC), das Attribut im Namen hat.

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

Andere Tipps

Darüber hinaus können Sie Ihre eigenen Attribute erstellen. Wenn Sie jemand anderem Code suchen durch, es ist leicht verwirrt zu erhalten, wenn sie ihre eigenen erstellen.

Hier ist eine Liste , aber es ist nicht vollständig. Es gibt über 200 Attribute.

Ich bin mir nicht bewusst, eine vollständige Liste der Attribute, sondern eine Suche nach Attribute in MSDN kann interessante Ergebnisse liefern. Ich habe eher Namensräume für interessante Attributtypen zu durchsuchen und sie gehen zu sehen, um zu sehen, was ich ihnen verwenden könnte. Nicht der effizienteste Ansatz, den ich kenne.

Der MSDN-Eintrag für -System. Attribut hat eine Liste am unteren Ende.

Sie können nicht finden, was Sie suchen, weil es möglich ist, dass Sie in einem benutzerdefinierten Attribut suchen.

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

Sie können Reflektor verwenden, um die mscorlib Montage zu durchsuchen, und unter System.Attribute , erweitern Sie die Abgeleitete Typen Knoten. Es zeigt alle Attribute für alle Baugruppen zur Zeit in Reflector geladen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top