मेरी एक कक्षा है Step

public class TrainingStep
{
    private List<Part> parts;
    public Part currentPart;
   
    public void AddPart(Part part)
    {
       parts.Add(part);
    }

    ///a lot of public methods which are called from one layer above Step( a class containing Step list)
}

इस कोड में Part को Step के बारे में कुछ भी पता नहीं है।

currentPart बहुत बार बदल रहा है और मैं चाहता हूं कि सभी parts यह जानें कि अभी कौन सा करंट है

इसे प्राप्त करने के लिए मैंने step को Part क्लास कंस्ट्रक्टर के लिए एक पैरामीटर के रूप में जोड़ने पर विचार किया, ताकि प्रत्येक भाग जानता हो कि यह किस Step से संबंधित है। कुछ इस तरह

public Part(Step step, ...)
{
  this.step = step;
}

लेकिन इस तरह के समाधान की समस्या यह है कि मैं उस संदर्भ का उपयोग करके Step कक्षा में Part से प्रत्येक सार्वजनिक विधि तक पहुंच सकता हूं जिसे मैंने कन्स्ट्रक्टर के माध्यम से पारित किया है।

लेकिन मैं Part से केवल currentPart फ़ील्ड तक पहुंचना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है?

0
Karen Avdalyan 26 नवम्बर 2020, 16:52

1 उत्तर

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

आप एक Func<Part> परिभाषित कर सकते हैं जो आपका currentPart लौटाता है और इस प्रतिनिधि को आपके हिस्से में भेजता है।

public class TrainingStep
{
    private List<Part> parts;
    public Part currentPart;
    private Func<Part> getCurrentPartFunc = () => currentPart;
   
    public void AddPart(Part part)
    {
       part.GetCurrentpart = getCurrentPartFunc;
       parts.Add(part);
    }
}

class Part
{
    public Func<Part> GetCurrentPart {get; set;}
}
1
SomeBody 26 नवम्बर 2020, 14:07