1)我有一个名为SocketServer的项目,其中有一个Class Room,该项目是编译的exe,也可以编译为DLL。

2)在另一个名为MyGame的项目中,有一个名为MyAwesomeGame的类,在其中需要执行以下操作:

public class MyAwesomeGame
{
    public Init(Room room)
    {
        //I can get data from Room
    }
}


现在,将MyGame Project编译成MyGame.DLL,并放置在相对于SocketServer.exe的某个位置,该套接字在运行时加载MyGame.DLL并实例化MyAwesomeGame类,并调用Method Init并传递room作为其参数。代码是SocketServer项目,类似于:

public class Room
{
     private InstantiateGameRoom()
     {
          //Load External MyGame.DLL Assembly
          Task<MyAwesomeGame> task = Task<MyAwesomeGame>.Factory.StartNew(() => (MyAwesomeGame)Activator.CreateInstance(classType, new object[] { this }));
          MyAwesomeGame instance = task.result;
          instance.init(this);
     }
}


所以我的问题是如何获得MyGame Project中的教室室参考?我应该添加我的SocketServer项目的参考吗?如果可以,是否不会将其编译到MyGame.dll中?

附注:我还打算将socketserver.dll作为API分发给第三方用户。

最佳答案

您应该将SocketServer的生成的dll添加到MyGame项目的引用中。右键单击MyGame,单击添加,单击引用...,在对话框中选择项目,然后选择SocketServer项目。

我认为确保SocketServer是MyGame项目的依赖也是明智的,以确保SocketServer在MyGame之前构建。

--edit:请阅读下面我在Sushant澄清后发表的评论。或直接进入Sid的答案。 :-)

10-08 06:18