C# 从其他c类获取功能 使现代化

C# 从其他c类获取功能 使现代化,c#,C#,我正在编写一个silverlight应用程序,我有下面的类Home,在这个类中,我读了一个.xml文件,然后把它们写到一个列表框中。在另一个类概述中,我将显示相同的.xml文件。我知道写和在教室里一样的代码是愚蠢的 问题是,如何获取这些数据 我的问题是如何从另一个类重用LoadXMLFile方法 密码 //读取类Home中的.xml文件 public void LoadXMLFile() { WebClient xmlClient = new WebClient();

我正在编写一个silverlight应用程序,我有下面的类Home,在这个类中,我读了一个.xml文件,然后把它们写到一个列表框中。在另一个类概述中,我将显示相同的.xml文件。我知道写和在教室里一样的代码是愚蠢的

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

我的问题是如何从另一个类重用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;
           
        }
    }

创建一个类来读取XML文件,并从其他类中引用它以使用它。假设您将其命名为XmlFileLoader,您将在其他类中这样使用它:

var xfl = new XmlFileLoader();
var data = xfl.LoadXMLFile();
如果我是您,我会让LoadXMLFile函数接受一个Uri参数,以使其更易于重用:

var data = xfl.LoadXMLFile(uriToDownload);

创建一个类来读取XML文件,并从其他类中引用它以使用它。假设您将其命名为XmlFileLoader,您将在其他类中这样使用它:

var xfl = new XmlFileLoader();
var data = xfl.LoadXMLFile();
如果我是您,我会让LoadXMLFile函数接受一个Uri参数,以使其更易于重用:

var data = xfl.LoadXMLFile(uriToDownload);

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

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

OK。var xfl=newxmlfileloader之间的区别是什么;XmlFileLoader xfl=新的XmlFileLoader。方法LoadXMLFile和XMLFileLoaded必须返回一些东西吗?第一行与使用新WebClient;在函数中执行的操作类似;。它得到一个新的XmlFileLoader对象,我只是用它作为类名的示例。第二行使用第一行。两者都应该返回一些东西,否则您将无法使用XML…我更新了问题。我只需要变量lsTags lsBox的值就是主页上的列表框。除了创建另一个类之外,没有其他方法了吗?好的。var xfl=newxmlfileloader之间的区别是什么;XmlFileLoader xfl=新的XmlFileLoader。方法LoadXMLFile和XMLFileLoaded必须返回一些东西吗?第一行与使用新WebClient;在函数中执行的操作类似;。它得到一个新的XmlFileLoader对象,我只是用它作为类名的示例。第二行使用第一行。两者都应该返回一些东西,否则您将无法使用XML…我更新了问题。我只需要变量lsTags lsBox的值就是主页上的列表框。除了创建另一个类之外,没有其他方法了吗?您的函数下载XML,但不返回它,因此值丢失了。我不知道这有什么意义,这就是问题所在。我不知道如何返回我的.xml文件的结果…如果你不知道如何编写一个函数使它返回一个值,我想你需要学习一本基本的C编程书。是的。。不是书面的。委托存在void类型的边界问题。您的函数下载XML,但不返回,因此值丢失。我不知道这有什么意义,这就是问题所在。我不知道如何返回我的.xml文件的结果…如果你不知道如何编写一个函数使它返回一个值,我想你需要学习一本基本的C编程书。是的。。不是书面的。这是委托的问题,有void类型的bouth。