我正在为我的程序编写更新检查程序,并且我正在使用远程服务器中的xml。请求工作正常,它做我想要的。问题是我无法从另一个文件中调用该函数。 (见下面的代码)
文件
RequestVersion()
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
访问数组元素?
答案 0 :(得分:4)
我不太了解你的问题,但是:
version v = new version();
string[] s = v.RequestVersion();
答案 1 :(得分:0)
在其他文件和项目中引用代码
在同一个项目中,代码是在相同文件还是在不同文件中完全没有区别。唯一重要的是访问修饰符(public
,protected
,internal
和private
)。
如果两个代码段位于不同的项目中,则编译的代码将被编译为两个不同的程序集(*.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();