C # - Come posso garantire che un membro sia invocato senza doverlo chiamare e fare affidamento sul {get; }

1

Uso la reflection come metodo per implementare uno schema factory:

        Type type = GetProviderType(vendor);
        ConstructorInfo constructorInfo = type.GetConstructor(new Type[] { typeof(NameValueCollection) });
        ExternalSourceProvider vendorSourceProvider = (ExternalSourceProvider)constructorInfo.Invoke(new Object[] { requestData });

Posso assicurarmi che un membro dell'oggetto fabbricato venga invocato aggiungendo questo codice:

        _externalSiteId = vendorSourceProvider.ExternalId;
        _app = vendorSourceProvider.App;

Questo è puzzolente: non dovrei aver bisogno di "toccare" il membro per assicurarmi che sia invocato. Qualche idea su come garantire l'invocazione del membro? Il motivo per cui voglio invocare questi membri è che ho bisogno di eseguire il "bootstrap" dell'oggetto fabbricato "vendorSourceProvider" (e toccare il membro mi permette di farlo nel {get} del membro). Qualche idea su come ottenere ciò che sto cercando di fare senza "toccare" inutilmente il membro?

    
posta Johnny 14.11.2016 - 02:52
fonte

1 risposta

3

Sembra che tu stia complicando le tue overcomplificazioni.

Se vuoi eseguire il bootstrap di un oggetto in uno stato specifico, allora dagli un metodo che lo compie .

Quello che stai facendo è come usare la meccanica magica e quantistica per ordinare un mazzo di carte. Perché non semplicemente ordinare il mazzo di carte ( deck.sort() o deck.prepare() )?

    
risposta data 14.11.2016 - 17:40
fonte

Leggi altre domande sui tag