访问另一个* .cs文件中定义的类成员

时间:2014-10-12 15:01:15

标签: c# xml visual-studio

我正在为我的程序编写更新检查程序,并且我正在使用远程服务器中的xml。请求工作正常,它做我想要的。问题是我无法从另一个文件中调用该函数。 (见下面的代码)

文件

  • home.cs - 我想调用RequestVersion()
  • 的地方
  • version.cs - RequestVersion()所在的位置

代码

version.cs

namespace MyName
{
class version
{
    public string[] RequestVersion()
    {
        XmlDocument doc = new XmlDocument();
        try
        {
            string[] version_data = new string[3];
            doc.Load("link_here");
            foreach (XmlNode node in doc.DocumentElement)
            {
                string version = node.Attributes[0].Value;
                string date = node["date"].InnerText;
                string changelog = node["changelog"].InnerText;

                version_data[0] = version;
                version_data[1] = date;
                version_data[2] = changelog;

                return version_data;

            }
        }
        catch (Exception xml_ex)
        {

        }
        return null;
    }
  }
}

(返回一个数组)

home.cs

 private void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
 {
    //This is the place from where i want to access the array!       
 }

我的XML结构:

<?xml version="1.0" encoding="UTF-8"?>
<SerialMate>
  <release version="1.0.0">
    <date>12-10-2014</date>
    <changelog>Test</changelog>
  </release>
</SerialMate>

(我没有在xml上添加任何新的<release>标签,所以它总是有1)

问题

所以,我的问题是:它如何从RequestVersion()中的home.cs访问数组元素?

2 个答案:

答案 0 :(得分:4)

我不太了解你的问题,但是:

version v = new version();
string[] s = v.RequestVersion();

答案 1 :(得分:0)

在其他文件和项目中引用代码

在同一个项目中,代码是在相同文件还是在不同文件中完全没有区别。唯一重要的是访问修饰符(publicprotectedinternalprivate)。

如果两个代码段位于不同的项目中,则编译的代码将被编译为两个不同的程序集(*.exe*.dll)。因此,一个项目必须引用另一个项目。通常,启动项目(*.exe)将引用类库项目(*.dll)。

如果两个项目在同一个解决方案中,您可以添加所谓的项目引用。右键单击解决方案资源管理器中的类库项目,然后单击“复制为项目引用”。在启动项目中,右键单击“References”,然后单击“粘贴参考”

如果两个项目在不同的解决方案中,则必须在启动项目中添加对类库DLL(通常是 bin / Release 中的一个)的引用。右键单击“References”,然后单击“Add Reference ...”。在引用对话框中,选择“Browse”并选择DLL。

还要确保不创建循环依赖项(项目A引用项目B,项目B引用项目A)。如果您有这样的依赖关系,通常可以通过将两个项目必须访问的代码放入第三个项目C来解决它。然后将引用更改为:引用C和B引用C。


调用另一个类的方法

类型(在您的情况下为一个类)及其成员(属性,方法,事件......)必须声明为public才能从其他项目访问。在同一个项目中,它们也可以声明为internal。 (如果要派生新类,也可以将它们声明为protected。)

如果某个成员被声明为static或者它是一个常量,您可以通过指定成员名称的类型名称来访问它:

var result = MyClass.MyMethod();

如果该成员是实例成员,则必须从该类型的实例(对象)中调用它:

MyClass obj = new MyClass();
var result = Obj.MyMethod();