0

いくつかのDBテーブルを管理するためのRESTサービスを作成しようとしているので、C#と.NETを初めて使用するため、チュートリアルを読むことから始めます。この良い出発点に出くわしました 。http://www.codeproject.com / Articles / 426769 / Creation-a-REST-service-using-ASP-NET-Web-API

この場合は単純なタスクリストを処理するコントローラーを作成する方法を示しているので、テーブルごとに1つのコントローラーを作成し、テーブルごとに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

そのコードはひどく時代遅れです。これは、WebAPIのプレビューリリースに基づいています。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 に答える