Gestisce le dipendenze delle classi di librerie di terze parti che non dispongono di un'interfaccia

3

Sto lavorando su EWS . Viene creata una classe per interrogare la casella di posta e leggere le e-mail.

public class MailReader
{

    private readonly ExchangeService _service;
    private readonly PropertySet _propertySet;

    private readonly IFolderSearch _folder;
    private readonly IMailAttachmentAdapter _attachment;
    private const int MaxEmail = 1000; 

    public MailReader(
        ExchangeService service,
        PropertySet propertySet,
        IFolderSearch folder,
        IMailAttachmentAdapter attachment)
    {
        _service = service;
        _folder = folder;
        _propertySet = propertySet;
        _attachment = attachment;
    }

qual è il modo migliore per iniettare ExchangeService , PropertySet le classi sono sigillate e senza interfaccia. Pianificazione dell'uso di AutoFac per la gestione delle dipendenze.

qualsiasi suggerimento sarà utile.

    
posta Prateek 15.02.2018 - 15:48
fonte

1 risposta

5

Uno dei modi più semplici, ma a lungo termine, per risolvere questo problema è utilizzare il modello di delega:

interface IDelegatedExchangeService
{
    bool AcceptGzipEncoding { get; set; }
    string ClientRequestId { get; set; }
    ...
}

class ConcreteExchangeService : IDelegatedExchangeService
{
    private ExchangeService _exchangeService;

    public bool AcceptGzipEncoding
    {
        get => _exchangeService.AcceptGzipEncoding;
        set => _exchangeService.AcceptGzipEncoding = value;
    }

    ...
}

e per utilizzare IDelegatedExchangeService nel codice.

    
risposta data 15.02.2018 - 16:00
fonte

Leggi altre domande sui tag