Ho la necessità di eliminare gradualmente un metodo obsoleto. Sono a conoscenza dell'attributo [Obsolete]
. Microsoft ha una guida consigliata alle best practice per farlo?
Ecco il mio piano attuale:
A. Non voglio creare un nuovo assembly perché gli sviluppatori dovrebbero aggiungere un nuovo riferimento ai loro progetti e mi aspetto di ottenere un sacco di dolore dal mio capo e dai miei colleghi se devono farlo. Inoltre, non gestiamo più versioni di assembly. Usiamo solo l'ultima versione. Cambiare questa pratica richiederebbe cambiare il nostro processo di distribuzione che è un grosso problema (devi insegnare alla gente come fare cose con TFS invece di FinalBuilder e fargli rinunciare a FinalBuilder)
B. Segna il vecchio metodo obsoleto.
C. Poiché l'implementazione sta cambiando (non la firma del metodo), ho bisogno di rinominare il metodo piuttosto che creare un sovraccarico. Quindi, per rendere gli utenti consapevoli del metodo corretto, ho intenzione di aggiungere un messaggio all'attributo [Obsolete]
. Questa parte mi infastidisce, perché l'unico cambiamento che sto facendo è disaccoppiare il metodo dalla stringa di connessione. Ma, poiché non sto aggiungendo un nuovo assembly, non vedo alcun modo per aggirare questo.
Risultato:
[Obsolete("Please don't use this anymore because it does not implement IMyDbProvider. Use XXX instead.")];
/// <summary>
///
/// </summary>
/// <param name="settingName"></param>
/// <returns></returns>
public static Dictionary<string, Setting> ReadSettings(string settingName)
{
return ReadSettings(settingName, SomeGeneralClass.ConnectionString);
}
public Dictionary<string, Setting> ReadSettings2(string settingName)
{
return ReadSettings(settingName);// IMyDbProvider.ConnectionString private member added to class. Probably have to make this an instance method.
}