Функция Func Delegate в Web API в другом проекте - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я работаю над приложением .NET Framework 4.7.2.Мне нужно отправить данные через C # в Web API, изменить данные в методе PUT в API и вернуть их.

Пока все хорошо, единственная проблема - моя архитектура: Web API - это тип проектаБиблиотека классов и будет запущена из другого Проекта в другом Решении (Мой сервер), в котором есть логика (определенный расчет), заключенная в метод.Почему-то мне нужно отправить (делегировать) метод из стартового проекта (мой сервер) в API-проект и использовать его в методе PUT.

Моя структура решения выглядит так, я не могу ее изменить:

Решение 1: + Клиент (Console, C #) + Web API (библиотека классов, C #) => должен находиться в этом проекте, поскольку это необходимо только для решения 1, я не могу поместить API в решение 2.

Решение 2: + Сервер с логикой (Console, C #) => проект, включающий логику, находится в другом решении.

Решение 1: Клиент , работает нормальноЯ просто вызываю API с HTTPClient в C #.

Решение 1: Контроллер веб-API:

public class MyController : ApiController
{
    [HttpPut]
    public async Task<IHttpActionResult> Put(int aFromClient)
    {
        // action delegate to method from my Server to manipulate data
        Func<int, int, int> func = SumMethodFromServer;

        int b = 4;

        int result = func(aFromClient, b);

        return Ok(result);
    }
}

Решение 2: Сервер с пользовательской логикой:

class Program
{
    static void Main(string[] args)
    {

        using (WebApp.Start<Startup>(baseAddress)); // I thought maybe, I can pass the method on this position somehow as a custom middleware, hmm

    }

    // Somehow pass this method as a delegate to the Web Api...
    static int SumMethodFromServer(int a, int b)
    {
        return a + b;
    }
}

Знаете ли вы, как я могу передать пользовательский метод в Web API в качестве делегата из другого проекта, в другом решении?

Если будетпуть без внедрения зависимостей, это было бы выгодно, но я думаю, что это будетСоболь без?:)

Спасибо !!

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