var pt = Type.GetType("<Program>$");
var m = pt.GetMethod("<Main>$", BindingFlags.Static);
// m is null

ठीक है, मैं Program क्लास लेता हूं, यह ठीक काम करता है। लेकिन जब मैं Main विधि को पकड़ने के लिए जाता हूं, तो सिस्टम इसे नहीं ढूंढ सकता है, और यह pt.GetMembers() में भी नहीं है। क्या चल रहा है?

4
Dmitri Nesteruk 23 नवम्बर 2020, 13:42

1 उत्तर

सबसे बढ़िया उत्तर

आपको केवल यह निर्दिष्ट करने की आवश्यकता है कि आप गैर-सार्वजनिक सदस्यों को देखना चाहते हैं:

using System;
using System.Reflection;

var pt = Type.GetType("<Program>$");
var m = pt.GetMethod("<Main>$", BindingFlags.Static | BindingFlags.NonPublic);
Console.WriteLine(m); // Prints Void <Main>$(System.String[])

इसी तरह GetMembers का उपयोग करते हुए, आपको यह निर्दिष्ट करना होगा कि आप सार्वजनिक और गैर-सार्वजनिक सदस्य चाहते हैं:

using System;
using System.Reflection;

var pt = Type.GetType("<Program>$");
var flags =
    BindingFlags.Public | BindingFlags.NonPublic |
    BindingFlags.Instance | BindingFlags.Static;
foreach (var member in pt.GetMembers(flags))
{
    Console.WriteLine(member);
}
5
Jon Skeet 23 नवम्बर 2020, 10:52