对于Azure App Service的简单todo示例,我的TodoUserController
是TableController
而FacebookController
是ApiController
。
在FacebookController
中,我想获取TodoUserController
TodoUserController
public class TodoUserController : TableController<TodoUser>{...}
FacebookController
public class FacebookController : ApiController{
....
TodoUserController ctrl = new TodoUserController();
var users = ctrl.GetAllTodoUsers();
....
}
我在实例化NullException
TodoUsersController
如何让用户TodoUserController
?
答案 0 :(得分:0)
如果您仍需要解决此问题,正如其他人所评论的那样,您检索待办事项列表的共享代码应移至其他位置。通常在服务中,您的TodoUserController和您的FacebookController都可以调用该服务来获取所需的数据:
public class TodoUserService {
public IEnumerable<TodoUser> GetAllTodoUsers() {
Console.WriteLine ("Getting todos...");
// ...
}
}
public class TodoUserController : TableController<TodoUser> {
public IEnumerable<TodoUser> GetAllTodoUsers() {
TodoUserService todoUserService = new TodoUserService();
return todoUserService.GetAllTodoUsers();
}
}
public class FacebookController : ApiController {
public FacebookStuff GetFacebookStuff() {
TodoUserService todoUserService = new TodoUserService();
var users = todoUserService.GetAllTodoUsers();
// ... other Facebook stuff
}
}
这实现了我认为你想要做的事情 - 通过不重复两个地方的逻辑来保持代码DRY,并且还保持关注点分离(SoC)。正如mason提到的控制器理想情况下应包含最少的代码,主要处理来自客户端的请求。
希望有所帮助。