用C#编写的exe文件 我需要将复杂的返回值返回给另一个C#项目
这是我的代码:
class Program
{
private class MyObject
{
private int num;
public int Num
{
get
{
return (this.num);
}
set
{
this.num = value;
}
}
public MyObject(int num)
{
this.Num = num;
}
}
[STAThread]
public static MyObject Main(string[] args)
{
return new MyObject(5);
}
}
这给了我以下错误: ... \ ConsoleApplication1.exe中” 不包含适用于入口点的静态“Main”方法。
我尝试过玩它但是我没有成功让它返回一个复杂的值。
答案 0 :(得分:7)
您无法通过Main
方法执行此操作,该方法是该流程的切入点。
如果您正在编写要直接从其他代码调用的代码,那么您几乎肯定会构建一个类库项目。您可以从一个应用程序添加引用到另一个应用程序,但这是不寻常的(至少在单元测试之外)。如果您想这样做,您应该使用其他方法而不是Main
。 (你可以在一个类中以这种方式声明Main
方法,并使用不同的类作为“正常”入口点,但这看起来毫无意义。)
答案 1 :(得分:0)
如上所述,如果您将exe作为独立的可执行文件调用,那么Main
必须运行,而您获得的只是传统的流程输入/输出。
但是,如果你真的需要,你也可以将exe引用为库。
如果这是你的exe的代码:
public class MyObject
{
private int num;
public int Num
{
get
{
return (this.num);
}
set
{
this.num = value;
}
}
public MyObject(int num)
{
this.Num = num;
}
}
public class Program
{
public static MyObject DoWork(int num)
{
return new MyObject(num);
}
[STAThread]
public static int Main(string[] args)
{
DoWork(5);
return 0;
}
}
从另一个exe或dll(假设你引用了你的第一个exe),你可以调用这样的代码:
MyObject obj = Program.DoWork(8)
但这是一种非常不寻常的方法。如果您有在多个地方定义所需的丰富类/方法的库,那么您应该将它们放在一个dll中。