.net web api RESTFul Web服务引导程序

时间:2013-02-06 16:11:02

标签: c# asp.net-web-api

我正在尝试创建一个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;
}

也许??

感谢您对此提供任何帮助!!

1 个答案:

答案 0 :(得分: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()
    {
    }
}