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

本文关键字:定义 成员 文件 另一个 cs 访问 | 更新日期: 2023-09-27 18:26:19

我正在为我的程序编写一个更新检查器,并且我正在使用来自远程服务器的xml。请求运行良好,它满足了我的要求。问题是我无法从另一个文件调用该函数。(参见下面的代码)

文件

  • home.cs-我想称之为RequestVersion()的地方
  • version.cs-RequestVersion()所在的位置

代码

版本.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个)

问题

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

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

我真的不理解你的问题,但是:

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

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

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

如果这两个代码段在不同的项目中,那么编译后的代码将被编译成两个不同的程序集(*.exe*.dll)。因此,一个项目将不得不参考另一个项目。通常,启动项目(*.exe)将引用类库项目(*.dll)。

如果这两个项目在同一个解决方案中,则可以添加一个所谓的项目引用。右键单击解决方案资源管理器中的类库项目,然后单击"复制为项目引用"。在启动项目中,右键单击"References",然后单击Paste Reference。

如果这两个项目在不同的解决方案中,则必须在启动项目中添加对类库DLL的引用(通常是bin/Release中的DLL)。右键单击"引用",然后单击[添加引用…]。在引用对话框中选择"浏览"并选择DLL。

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


调用另一个类的方法

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

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

var result = MyClass.MyMethod();

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

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