[英]how to call another method in C# from another file
我尝试浏览许多资源,但由于我不是C#开发人员,所以我只是不明白需要做什么。 我被分配此项目的唯一原因是因为我们需要连接的Web服务显然仅与C#兼容。 因此,我在尝试完成该项目的过程中只是在学习。 在我们部门,没有其他人。 知道C#。 我正在构建一个SSIS包,并使用C#创建了一个“脚本任务”。 工具创建的scriptMain.cs是这个
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.ServiceClient;
namespace ST_3c3fd2f1b7404161b62ff2b81f12192c.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void MainScript()
{
// TODO: Add your code here
Program.Main();//I AM TRYING TO MAKE THE CALL TO PROGRAM.cs file Main() method
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
我猜这个ScriptMain.cs是运行SSIS时执行的文件。 所以我试图从上面的scriptMain.cs(Program.Main())调用下面的文件Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.ServiceClient;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.csproj;
namespace ST_3c3fd2f1b7404161b62ff2b81f12192c
{
class Program
{
static void Main()//Trying to call this so that it can execute its methods/processes
{
WebClient client = GetClient();
// Example 1 - Select Changes
SelectTicketChanges(client);
SelectStepChanges(client);
}
如您所见,此Main()方法调用其他方法。 我没有编写此BTW,它是由我们尝试连接的客户端提供的。
现在,Program.Main(),Main()在下面显示红色错误,表示“由于其保护级别而无法访问Program.Main()”。
如果我改变
static void Main()
至
public void Main()
而不是我的ScriptMain.cs Program.Main()在下面说“非静态字段,方法或属性需要对象引用。”
我只希望它调用其他方法,以便它可以执行其功能。
如果您能做到尽可能少的技术,那真是太好了。 正如我所说的那样,我只是在学习C#的过程中学习这个项目。
谢谢!
更改为:
public static void Main()
简而言之,这是因为static
需要保留。
更详细一点:方法的默认可访问性是private
,因此现有方法等效于private static void Main()
。 这应该更改为public
以便您可以从ScriptMain
类中调用它。
static
意味着它属于Program
类,并且可以被称为Program.Main()
,而不是实例,这意味着只能从实例(例如new Program().Main()
调用它。
尝试
public class Program
{
public static void Main()
{
当执行用C#编写的程序时,CLR搜索带有.entrypoint IL指令标记的静态方法,该指令不带参数,也可以不带字符串[]类型的单个参数,并且返回类型为void或int,并且执行它
因此,无论您要做什么,都必须在Static主函数中调用它
看起来您通常需要查找OO(面向对象)编程和C#。 http://www.codeproject.com/Articles/219869/Object-Oriented-Programming-in-Csharp-NET
但是要回答您的问题,如果要访问静态方法,请先引用它们的类,然后再引用它们,例如:
Program.Main();
要访问非静态方法,您必须首先实例化一个对象(更确切地说是“类”),例如:
MyClass c = new MyClass();
c.Method();
附录:您可能在编译/运行该代码时遇到麻烦,因为Visual Studio认为Program.Main()
是程序的入口点(即使不是这种情况),您需要告诉编译器ScriptMain.MainScript()
实际上通过查看您的解决方案属性是入口点。
采用
public static void Main()
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.