문제

객체에서 사용되는 일반적인 속성의 어딘가에있는 목록이 있습니까? Serializable?

감사

편집 ~ 내가 요청한 이유는 내가 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 항목 System.Attribute 하단에 목록이 있습니다.

사용자 정의 속성을보고있을 수 있기 때문에 찾고있는 것을 찾지 못할 수도 있습니다.

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

반사기를 사용하여 찾아 볼 수 있습니다 mscorlib 어셈블리 및 아래 System.Attribute, 확장 파생 된 유형 마디. 현재 반사기에로드 된 모든 어셈블리의 모든 속성을 표시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top