2011-02-11 23 views
51
private void Include(IList<string> includes, Action action) 
{ 
    if (includes != null) 
    { 
     foreach (var include in includes) 
      action(<add include here>); 
    } 
} 

मैं यह है किमैं एक्शन में पैरामीटर कैसे पास कर सकता हूं?

this.Include(includes, _context.Cars.Include(<NEED TO PASS each include to here>)); 

विचार पारित प्रत्येक विधि को शामिल है की तरह कॉल करना चाहते हैं।

+0

अपने 'Action' सिर्फ एक' Action' है या यह एक 'कार्रवाई ' या किसी अन्य बदलाव है? आप कितने पैरामीटर चाहते हैं? – BoltClock

+1

प्रश्न – Jop

+0

अपडेट किया गया ऐसा लगता है कि आप पहले से ही 'शामिल' तर्क के माध्यम से शामिल हो रहे हैं। क्या यह विचार है कि आप 'एक्शन' सूची के प्रत्येक सदस्य को 'एक्शन' में पास करना चाहते हैं? यदि ऐसा है, तो बस '_context.Cars.Include' पास करें (बिना ब्रैकेट के)। – itowlson

उत्तर

61

यदि आप जानते हैं कि आप किस पैरामीटर को पास करना चाहते हैं, तो Action<T> इस प्रकार के लिए लें। उदाहरण:

void LoopMethod (Action<int> code, int count) { 
    for (int i = 0; i < count; i++) { 
     code(i); 
    } 
} 

आप पैरामीटर अपने विधि करने के लिए पारित किया जाना चाहते हैं, विधि सामान्य बनाने:

void LoopMethod<T> (Action<T> code, int count, T paramater) { 
    for (int i = 0; i < count; i++) { 
     code(paramater); 
    } 
} 

और फोन करने वाले कोड:

Action<string> s = Console.WriteLine; 
LoopMethod(s, 10, "Hello World"); 

अद्यतन।

private void Include(IList<string> includes, Action<string> action) 
{ 
    if (includes != null) 
    { 
     foreach (var include in includes) 
      action(include); 
    } 
} 

public void test() 
{ 
    Action<string> dg = (s) => { 
     _context.Cars.Include(s); 
    }; 
    this.Include(includes, dg); 
} 
+0

विचार प्रत्येक को शामिल करने के लिए विधि _context.Cars.Include() – Jop

+0

इस कोड के साथ (अद्यतन से कोड) त्रुटि प्राप्त करना: 'सिस्टम .Data.Objects.ObjectQuery System.Data.Objects.ObjectQuery शामिल करें (स्ट्रिंग) 'में गलत रिटर्न प्रकार – Jop

+0

@jop अपडेट किया गया है, एक नया' एक्शन ' प्रतिनिधि जो 'कारें शामिल करता है। शामिल करें '। वैकल्पिक रूप से, आपकी कस्टम शामिल विधि 'Func ' –

9

आप Action<T> देख रहे हैं, जो एक पैरामीटर लेता है।

+0

आप एक दूसरा 'टी' जोड़ना चाह सकते हैं। – SLaks

+0

विचार प्रत्येक को शामिल करने के लिए है _context.Cars.Include() – Jop

5

गंदा चाल:: अपने कोड की तरह दिखना चाहिए साथ ही आप लैम्ब्डा अभिव्यक्ति का उपयोग मानकों के साथ कॉल सहित किसी भी कोड आप चाहते हैं पारित करने के लिए कर सकता है।

this.Include(includes,() => 
{ 
    _context.Cars.Include(<parameters>); 
}); 
संबंधित मुद्दे

 संबंधित मुद्दे