Как бороться с возвратом множества различных типов из Azure DocumentDb / CosmoDB? - PullRequest
0 голосов
/ 26 апреля 2018

Я использую Azure DocumentDb / CosmoDB и у меня получился действительно грязный шаблон, из которого мне нужно выйти.

У меня есть контроллер WebAPI, из которого я возвращаю свои объекты на основе идентификатора.У меня также есть хранилище, которое будет запрашивать DocumentDB в зависимости от.Проблема в том, что у меня есть около 30 различных типов (и они растут), и я должен сделать что-то вроде этого:

 public async Task<HttpResponseMessage> GetWidget(String id, String widgetType)
        {
            if (widgetType.Equals("WidgetA"))
            {
                DocumentDbRepository<WidgetA> repo = new DocumentDbRepository<WidgetA>();
                var widget = await repo.GetItemAsync(id);
                return (ControllerContext.Request.CreateResponse(HttpStatusCode.OK, widget));
            }
            else if (resourceBase.SystemType.Equals("WidgetB"))
            {
                DocumentDbRepository<WidgetB> repo = new DocumentDbRepository<WidgetB>();
                var widget = await repo.GetItemAsync(id);
                return (ControllerContext.Request.CreateResponse(HttpStatusCode.OK, widget));
            }

        ...
     }

Я знаю, это ужасно.Я думаю об использовании отражения или, может быть, даже некоторых шаблонов T4 для генерации всего этого, но я думаю, что должен быть более чистый способ?

заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...