मैं कुछ वर्गों को बचाने के लिए करना चाहते हैं और के बाद से एक्सएमएल-क्रमबद्धता मेरे मामले में यह काम नहीं चलेगा मैं एक xml-दस्तावेज़ में मैन्युअल रूप से मूल्यों की बचत कर रहा हूँ। ठीक काम करता है, लेकिन FxCop इसे पसंद नहीं करता है और चूंकि FxCop सामान्य रूप से अच्छी सलाह देता है और कारणों से मुझे चीजों को एक निश्चित तरीके से क्यों नहीं करना चाहिए, मैं इसे खुश रखने की कोशिश करता हूं।FxCop शिकायत: उजागर ठोस एक्सएमएल प्रकार और एक बुरी सुधार
इस बार, मुझे नहीं पता कि यह कैसे सुधार है।
यह मैं क्या था:
public void Save()
{
XmlDocument doc = new XmlDocument();
XmlNode XmlNodeJob = doc.CreateElement("Job");
doc.AppendChild(XmlNodeJob);
OtherclassSave2(XmlNodeJob);//Node as Parameter
}
public void OtherclassSave2(XmlNode node)
{
}
और यही FxCop शिकायत की है:। "संशोधित सदस्य 'OtherclassSave2 (XmlNode)' इसलिए इसमें ऐसी कोई ठोस प्रकार 'XmlNode' को उजागर करता है IXPathNavigable उपयोग एक्सएमएल डेटा स्रोतों का प्रतिनिधित्व करने के लिए। "
और अब मेरी भयानक समाधान:
public void Save() { XmlDocument doc = new XmlDocument(); XmlNode XmlNodeJob = doc.CreateElement("Job"); doc.AppendChild(XmlNodeJob); OtherclassSave2(XmlNodeJob.CreateNavigator());//Interface from a node's navigator } public void OtherclassSave2(IXPathNavigable nav) { XmlNode node = (XmlNode)(nav.CreateNavigator().UnderlyingObject); }
इस तरह मैं अन्य विधि में मेरी नोड हो और FxCop खुश है, लेकिन मैं वास्तव में सुधार नहीं दिख रहा है और मैं एक की जरूरत है इसमें कुछ जोड़ने के लिए नोड, पढ़ने के लिए कुछ नहीं।
मैं हालांकि बारे में() एक XmlNode GetMeTheNode में शून्य SaveInThisNode (XmlNode) बदलते लेकिन CreateElements के माध्यम से नोड्स बनाने के लिए, मैं XmlDocument-वस्तु जो मैं एक पैरामीटर के रूप में उपयोग करने की अनुमति नहीं कर रहा हूँ की जरूरत है, लेकिन मैं कर सकता था हर कदम में नया एक्सएमएल दस्तावेज़ बनाएं, ठीक है।
मेरे समाधान सरल था और सब कुछ मैं इसे करना चाहता था के लिए ठीक काम किया, लेकिन FxCop समाधान है कि स्पष्ट रूप से नहीं बदतर और अधिक जटिल हैं अनुमति देने के लिए प्रतीत नहीं होता।
मेरी समझ यह है कि आपको इसे लागू करने वाले वर्गों के बजाय उस इंटरफ़ेस के आसपास फेंकना होगा। बहुत आम अवधारणा। कभी-कभी यह चीजों को आसान बनाता है, दूसरी बार, इतना नहीं। यह उन "मेह" दिशानिर्देशों में से एक है। – Zenexer
'एक्सएमएलएनओडी' लागू 'IXPathNavigable', y उत्तर देखें। आप चेतावनी को बहुत आसानी से ठीक कर सकते हैं। – ken2k
मुझे लगता है कि आप अपनी समस्या को हल करने के लिए विधि को आंतरिक भी बना सकते हैं। –