با سلام.
چند وقت پیش دنبال یه کدی بودم که بشه لیست تمامیه Type های .NET Framework رو باهاش در آورد.
جایی نتونستم پیدا کنم ، فقط با راهنماییه بچه های CodeProject فهمیدم که باید از Reflection استفاده کنم. چیزس که قبلا کار نکرده بودم .
بعد از یه دو سه روزی کار کردن و آشنا شدن با هاش این کد رو نوشتم که اسم تمامیه Type های .Net رو پیدا می کنه و اونا رو به syntax یه آرایه از string در C# در میاره و تو یه فایل کنار خود پروژه ذخیره می کنه .
حالا برا شما هم این کد رو می زارم

static string fileName = "types.txt";
static void Main(string[] args)
{
    StreamWriter SW;
    SW = File.CreateText(fileName);
    SW.WriteLine("string[] mds = new string[] {");
    SW.Write("\t\t\t\t\t");

    DirectoryInfo directory = new DirectoryInfo(Environment.ExpandEnvironmentVariables("%SystemRoot%") + @"\assembly");

    Assembly assembly;
    Type[] types;

    var DLL_Files = directory.GetFiles("*.dll", SearchOption.AllDirectories);

    short i = 0;
    int assembliesCounter = 0;
    int typeCounter = 0;
    int allAssemblies = DLL_Files.Length;
    int counter = 0;

    foreach (var file in DLL_Files)
    {
        assembliesCounter++;
        try
        {
            assembly = Assembly.LoadFile(file.FullName);
            types = assembly.GetTypes();
            typeCounter = types.Length;
            foreach (var type in types)
            {
                i++;
                typeCounter--;
                if (i > 10)
                {
                    SW.WriteLine("\"" + type.Name.Replace("\\", "") + "\"" + ", ");
                    SW.Write("\t\t\t\t\t");
                    i = 0;
                }
                if (assembliesCounter >= allAssemblies && typeCounter <= 0)
                    SW.Write("\"" + type.Name.Replace("\\", "") + "\"");
                else
                    SW.Write("\"" + type.Name.Replace("\\", "") + "\"" + ", ");
                counter++;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    SW.WriteLine("};");
    SW.Close();

    Console.WriteLine("\n{0} Types Found", counter.ToString());
    Console.WriteLine("Finish");
    Console.ReadKey();
}

کلمات کلیدی : لیست کلاس ها ، لیست namespace ها ، list of class namespace , C# , VB , .Net Framework




برچسب های این مطلب : #c و reflection و بریده کد