سؤال

هل هناك قائمة في مكان ما بالسمات الشائعة المستخدمة في كائنات مثل Serializable?

شكرًا

تحرير ~ سبب سؤالي هو أنني صادفت سمة StoredProcedure في ntiers ORMS.

هل كانت مفيدة؟

المحلول

نعم، انظر MSDN هل قمت بتغطيتها، يرجى النظر هنا.

يحرر:هذا الرابط الإجابة فقط امتص.فيما يلي مستخرج فعال لجميع الأنواع القابلة للتحميل (gac) التي تحتوي على سمة في الاسم.

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

نصائح أخرى

وبالإضافة إلى ذلك، يمكنك إنشاء سمات الخاصة بك. إذا كنت تبحث عن طريق كود شخص آخر، فإنه من السهل الحصول على الخلط عند إنشاء تلقاء نفسها.

هنا قائمة على ، ولكنها ليست كاملة. وهناك أكثر من 200 الصفات.

وأنا لست على علم على قائمة كاملة من سمات، ولكن البحث عن السمة في MSDN يمكن أن تسفر عن نتائج مثيرة للاهتمام. لقد تميل لتصفح مساحات لأنواع سمة مثيرة للاهتمام وثم يذهب للبحث عنها لنرى ما يمكن أن تستخدمها ل. ليس هو النهج الأكثر فعالية، وأنا أعلم.

ودخول MSDN ل. السمة لديه قائمة في الأسفل.

وأنت قد لا تجد ما كنت تبحث عن لأنه من الممكن أن كنت تبحث في سمة مخصصة.

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

ويمكنك استخدام العاكس لتصفح التجمع mscorlib، وتحت على System.Attribute ، أو تعظيم و<م> أنواع مشتقة العقدة. وسوف تظهر جميع الصفات لجميع المجالس التي تم تحميلها حاليا في العاكس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top