В настоящее время я работаю над приложением .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 в качестве делегата из другого проекта, в другом решении?
Если будетпуть без внедрения зависимостей, это было бы выгодно, но я думаю, что это будетСоболь без?:)
Спасибо !!