访问在另一个*.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()
访问数组元素?
我真的不理解你的问题,但是:
version v = new version();
string[] s = v.RequestVersion();
在其他文件和项目中引用代码
在同一个项目中,代码是在同一文件中还是在不同的文件中,这完全没有区别。唯一重要的是访问修饰符(public
、protected
、internal
和private
)。
如果这两个代码段在不同的项目中,那么编译后的代码将被编译成两个不同的程序集(*.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();