从其他类c#到达功能

时间:2011-06-05 18:56:49

标签: c#

更新

我正在写一个silverlight应用程序,我有以下类“Home”,在这个类中读取一个.xml文件,将这些写入ListBox。在其他类概述中,我将显示相同的.xml文件。我知道编写与“Home”类相同的代码是愚蠢的。

问题是,如何获取这些数据。

我的问题是我如何重用另一个类的LoadXMLFile()方法?

代码。

//读取“Home”类中的.xml文件

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;

        }
    }

2 个答案:

答案 0 :(得分:1)

创建一个类来读取XML文件,从其他类中引用它以便使用它。假设您将其称为XmlFileLoader,您可以在其他类中使用它:

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

如果我是你,我会让LoadXMLFile函数获取Uri参数,使其更具可重用性:

var data = xfl.LoadXMLFile(uriToDownload);

答案 1 :(得分:0)

您可以创建一个类,其任务是加载XML并返回它,让调用LoadXmlFile方法的类确定如何处理生成的XML。