Beh, non so se "denominazione forte" è il termine giusto, ma quello che voglio fare è come segue.Posso utilizzare gli strumenti di costruzione di oggetti Ninject con un nome forte?
Attualmente utilizzo ConstructorArgument come ad es. questo:
public class Ninja
{
private readonly IWeapon _weapon;
private readonly string _name;
public Ninja(string name, IWeapon weapon)
{
_weapon = weapon;
_name = name;
}
// ..more code..
}
public void SomeFunction()
{
var kernel = new StandardKernel();
kernel.Bind<IWeapon>().To<Sword>();
var ninja = kernel.Get<Ninja>(new ConstructorArgument("name", "Lee"));
}
Ora, se io rinominare il parametro "nome" (per esempio usando ReSharper) il ConstructorArgument non aggiornerà, e mi metterò un errore di runtime durante la creazione della Ninja. Per risolvere questo problema ho bisogno di trovare manualmente tutti i posti che specificano questo parametro attraverso un oggetto Constructor e aggiornarlo. Non va bene, e sono destinato a fallire a un certo punto anche se ho una buona copertura di test. Rinominare dovrebbe essere un'operazione a basso costo.
Esiste un modo per specificare un riferimento al parametro, in modo che venga aggiornato quando rinominare il parametro?
Lo sto usando solo con componenti che possiedo, quindi non cambieranno improvvisamente a meno che non glielo dica. Ma non voglio avere le mani legate quando refactoring ... – stiank81
Capisco che uno sicuramente non vorrebbe che il tuo codice fosse fragile se tu dovessi citare ConstructorArgument (da qui io + 1ing la domanda). Stavo dicendo che se possiedi il codice probabilmente puoi fare meglio di appoggiare ConstructorArgument in primo luogo [mentre se non hai il codice, ci sono ragioni più legittime per farlo, ma gli impatti negativi sarebbero mitigati una laurea dal fatto che è meno probabile che cambi). –
Non preoccuparti: capisco la domanda e non sto cercando di darti un'altra non risposta che non risolva il problema che potresti aver pensato tu stesso. (Non mi sarei preoccupato di rispondere se non fosse stato per il fatto che sentivo che non avevi ancora una risposta che ascoltava la tua domanda.) –