यह this one से अलग है क्योंकि उस स्थिति में चेतावनी वैध थी। इस मामले में, स्वीकृत उत्तर के अनुसार चेतावनी अमान्य है। मैंने उस सवाल को देखा जब मैं जवाब की तलाश में था, तो यह इसका जवाब नहीं देता है। नीचे के रूप में छवि में दिखाया गया stashEntities की चर्चा करते हुएक्या यह रेसर्पर "डिस्पोजेड क्लोजर तक पहुंच" चेतावनी देने के लिए कुछ चेतावनी दे रहा है?
internal List<PaletteClass> GetPaletteList(int userId)
{
using(var stashEntities = new StashEntities<StashClass>())
using(var paletteEntities = new PaletteEntities<PaletteClass>())
{
var paletteList = from palette in paletteEntities.Palettes
from stash in stashEntities.Stashes
where palette.UserId == userId && stash.StashId == palette.StashId
select palette;
return paletteList.ToList();
}
}
कहाँ StashEntities और PaletteEntities DBContext से विरासत, मैं 'निपटाए बंद करने के लिए पहुँच' चेतावनी मिलती है:
को देखते हुए निम्नलिखित कोड।
मुझे पता है कि इस मामले हैं, जहां अभिव्यक्ति के बाद एक पैरामीटर दायरे से बाहर चला जाता है मूल्यांकन किया जाता है के खिलाफ की रक्षा करने के लिए है। लेकिन, इस मामले में अभिव्यक्ति को उपयोग के भीतर एक सूची में असाइन किया गया है, इसलिए stashEntities गुंजाइश में होना चाहिए।
ध्यान दें कि अगर मैं अभिव्यक्ति स्वैप इस प्रकार है:
var paletteList = from stash in stashEntities.Stashes
from palette in paletteEntities.Palettes
where palette.UserId == userId && stash.StashId == palette.StashId
select palette;
return paletteList.ToList();
तो ReSharper paletteEntities को चेतावनी ले जाता है।
प्रश्न: क्या यह रेसर्पर इस मामले में चिंता करने के लिए कुछ चेतावनी दे रहा है या क्या मुझे इस लाइन के लिए अनदेखा करने के लिए रीसर्पर टिप्पणी जोड़नी चाहिए?
बोनस प्रश्न (यदि पिछले प्रश्न का उत्तर अनदेखा किया गया है): क्या होगा यदि मैंने अभी तक टेलिस्टिस्ट को कॉललिस्ट() को कॉल किए बिना और अभिव्यक्ति को मूल्यांकन करने के लिए मजबूर किया है तो क्या होगा? तथ्य यह है कि ReSharper paletteEntities (मूल उदाहरण में) के बारे में चिंता नहीं करता है, मुझे लगता है कि इसे गुंजाइश रखने के लिए कुछ चल रहा है, क्या यह वही लागू होगा और सभी ठीक रहेगा?
अपडेट/सरलीकरण
नीचे छवि में दिखाया है, भले ही केवल एक DBContext (stashPaletteEntities) प्रयोग किया जाता है, मैं एक ही संदेश जिसका अर्थ है कि स्वीकार किए जाते हैं जवाब सही है मिल के रूप में - इस में एक बग है ReSharper। यदि stashPaletteEntities का जिक्र करने वाली पहली पंक्ति ठीक है, तो दूसरा भी होना चाहिए।