Aiuta a provare ad implementare una fabbrica di oggetti richiesta

4

Ecco il mio problema. Ho diversi tipi di metodi che rendono richieste HTTP a un API REST. Per mantenere le cose pulite, ho metodi che prendono diversi tipi di oggetti di richiesta come parametri. Esempio di seguito.

Task<IEventResponse> FindEventAsync(IGetEventsRequest data, CancellationToken token);

Quindi ogni volta che il mio controller chiama questo metodo, deve creare un oggetto di tipo IGetEventsRequest. Creare una nuova () istanza della sua implementazione sembra stupida, e ho iniziato a pensare di creare una fabbrica generica che potesse creare questi oggetti per me, e funzionare anche per tutti i tipi di tipi di oggetti. Qualsiasi aiuto come potrei ottenere questo?

Sto cercando questo tipo di sintassi:

await FindEventsAsync(_requestFactory.Create(?somehow specify the type of this and generate a new object based on the type), CancelationToken.None);
    
posta tjugg 26.02.2017 - 14:47
fonte

1 risposta

1

Non vedo del tutto perché questa è una sfida. Ecco un esempio di barebone.

interface IGetEventsRequest
{
}

class SomeRequest : IGetEventsRequest
{
    //Your implementation here
}

class RequestFactory
{
    public T Create<T>() where T: IGetEventsRequest, new()
    {
        T o = new T();
        //Add initialization code here
        return o;
    }
}

class Example
{
    private readonly RequestFactory _requestFactory;

    public Example(RequestFactory requestFactory)
    {
        _requestFactory = requestFactory;
    }

    void Test()
    {
        await FindEventsAsync(_requestFactory.Create<SomeRequest>(), CancelationToken.None);
    }
}
    
risposta data 15.08.2017 - 04:03
fonte