0

我正在尝试创建一个 REST 服务来管理一些数据库表,所以因为我是 C# 和 .NET 的新手,所以我从阅读教程开始,我遇到了这个很好的起点 tut http://www.codeproject.com /Articles/426769/Creating-a-REST-service-using-ASP-NET-Web-API

它展示了如何创建一些控制器,在这种情况下处理一个简单的任务列表,所以我想为每个表创建一个控制器并为每个表实现 GET、POST、PUT 等

我现在的问题是在最后的 Global.asax.cs 文件中我有这个

GlobalConfiguration.Configuration.ServiceResolver.SetResolver
(

t =>
{
    if (t == typeof(TasksController))
    {
        return new TasksController(new TaskRepository());
    }

    return null;
},

t => new List<object>()
);

它初始化了我的依赖项,但是...

首先,由于某种原因(我认为它与框架版本有关)ServiceResolver 类不存在,为什么?和

第二,即使存在我需要如何编写代码来创建和初始化其余的控制器?

t =>
{
    if (t == typeof(TasksController))
    {
        return new TasksController(new TaskRepository());
    }

    if (t == typeof(OtherController))
    {
        return new OtherController();
    }

    if (t == typeof(OneMoreController))
    {
        return new OneMoreController();
    }

    return null;
}

也许??

感谢您对此的任何帮助!

4

1 回答 1

1

该代码已严重过时。它基于 Web API 的预览版。在 Web API 的最终版本中,依赖注入的正确配置挂钩是

config.DependencyResolver = new MyDependencyResolver();

public class MyDependencyResolver : IDependencyResolver
{
    public IDependencyScope BeginScope()
    {
        // return a different instance if you want to dispose resources
        return this;
    }

    public object GetService(Type serviceType)
    {
        if (t == typeof(TasksController))
        {
            return new TasksController(new TaskRepository());
        }

        if (t == typeof(OtherController))
        {
            return new OtherController();
        }

        if (t == typeof(OneMoreController))
        {
            return new OneMoreController();
        }

        return null;
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return null;
    }

    public void Dispose()
    {
    }
}
于 2013-02-06T16:16:50.210 回答