क्या सिस्टम के माध्यम से कोई तरीका है। रिफ्लेक्शन, सिस्टम। डायग्नोस्टिक्स या अन्य वास्तविक उदाहरण का संदर्भ प्राप्त करने के लिए जो विधि में इसे पास किए बिना स्थिर विधि को कॉल कर रहा है?क्या मुझे प्रतिबिंब/निदान के माध्यम से एक विधि के भीतर कॉलिंग उदाहरण मिल सकता है?
इन पंक्तियोंclass A
{
public void DoSomething()
{
StaticClass.ExecuteMethod();
}
}
class B
{
public void DoSomething()
{
SomeOtherClass.ExecuteMethod();
}
}
public class SomeOtherClass
{
public static void ExecuteMethod()
{
// Returns an instance of A if called from class A
// or an instance of B if called from class B.
object caller = getCallingInstance();
}
}
मैं प्रकार System.Diagnostics.StackTrace.GetFrames का उपयोग कर प्राप्त कर सकते हैं, लेकिन वहाँ एक तरह से वास्तविक उदाहरण के लिए एक संदर्भ पाने के लिए है के साथ उदाहरण के लिए
, कुछ?
मुझे प्रतिबिंब और प्रदर्शन के साथ-साथ स्थैतिक कॉल के लिए स्थिर मुद्दों के बारे में पता है, और यह आम तौर पर लगभग असंभव है, इस तक पहुंचने का सही तरीका नहीं है। इस सवाल के कारण का हिस्सा है कि अगर यह करने योग्य था तो मैं उत्सुक था; हम वर्तमान में उदाहरण गुजर रहे हैं।
ExecuteMethod(instance)
और अगर यह संभव है और अभी भी उदाहरण का उपयोग करने में सक्षम होने था मैं तो बस सोचा।
ExecuteMethod()
@Steve कूपर: मैं विस्तार तरीकों पर विचार नहीं किया था। उसमें से कुछ भिन्नता काम कर सकती है।
यह समस्या हल करने के लिए यह बहुत ही शानदार तरीका है – ohmusama