开发者

Reach functionality from other class c#

update

I'm writing a silverlight application and I have the following Class "Home", in this class a read a .xml file a write these to a ListBox. In a other class Overview I will show the same .xml file. I know it is stupid to write the same code as in the class "Home".

The problem is, how to reach these data.

My question is how can I reuse the method LoadXMLFile() from another class?

The code.

// Read the .xml file in the class "Home"

public void LoadXMLFile()
    {
        WebClient xmlClient = new WebClient();
        xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
        xmlClient.DownloadStringAsync(new Uri("codeFragments.xml", UriKind.RelativeOrAbsolute));
    }
            private void XMLFileLoaded(object sender, DownloadStringCompletedEventArgs e)
    {    
        if (e.Error == null)
        {
            string xmlData = e.Result;
            XDocument xDoc = XDocument.Parse(xmlData);

            var tagsXml = from c in xDoc.Descendants("Tag") select c.Attribute("name");

            List<Tag> lsTags = new List<Tag>();
    
            foreach (string tagName in tagsXml)
            {
                Tag oTag = new Tag();
                oTag.name = tagName;
                var tags = from d in xDoc.Descendants("Tag") 
                                       where d.Attribute("name").Value == tagName
                                       select d.Elements("oFragments");
                var tagXml = tags.ToArray()[0];
   
                foreach (开发者_开发知识库var tag in tagXml)
                {                       
                    CodeFragments oFragments = new CodeFragments();                        
                    oFragments.tagURL = tag.Attribute("tagURL").Value;
                    //Tags.tags.Add(oFragments);
                    oTag.lsTags.Add(oFragments);
                    
                }
                lsTags.Add(oTag);
            }
            
            //List<string> test = new List<string> { "a","b","c" };
            lsBox.ItemsSource = lsTags;
           
        }
    }


Create a class to read the XML file, make references to this from your other classes in order to use it. Say you call it XmlFileLoader, you would use it like this in the other classes:

var xfl = new XmlFileLoader();
var data = xfl.LoadXMLFile();

If I were you, I would make the LoadXMLFile function take a Uri parameter to make it more reusable:

var data = xfl.LoadXMLFile(uriToDownload);


You could create a class whose single responsibility is loading XML and returning it, leaving the class that calls your LoadXmlFile method to determine how to handle the resulting XML.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜