У меня есть интерфейс для запросов и интерфейс для ответов.Я хочу вызвать что-то вроде этого
public IResponse Get(IRequest req)
Объект запроса сериализуется и отправляется по шине.
Я получаю ответ обратно, но мне нужно десериализовать ответ в класс IResponseэто соответствует конкретному классу IRequest.Как правильно связать ответ с запросом, чтобы каждый раз, когда кто-то реализовывал одну из этих пар запрос / ответ, ему приходилось ограничивать ее определенным типом?
Вот что я пробовал:
public interface IRequest<T> where T : IResponse
{
Type GetResponseType(T t);
}
public interface IResponse { }
public class Res : IResponse
{
public string response { get; set; }
}
public class Req : IRequest<Res>
{
public string request { get; set; }
public Type GetResponseType(Res t)
{
return t.GetType();
}
}
Проблема в том, что я не знаю, как передать IRequest сейчас:
public IResponse Get(IRequest req)
Я получаю ошибку:
Использование универсального типа 'IRequest 'требует аргумента 1 типа
Я пытался:
public IResponse Get(IRequest<IResponse> req)
Но когда я пытаюсь пройти в моем классе, я получаю:
Аргумент 1: не могу преобразоватьот 'Req' до 'IRequest <(IResponse)>'
Кто-нибудь знает правильный способ сделать что-то подобное или, по крайней мере, дайте мне знать, как заставить мой класс работать в качестве параметра?