好吧,我不知道“强命名”是否正确,但我想做的如下。
目前我使用 ConstructorArgument 像这样:
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"));
}
现在,如果我重命名参数“name”(例如使用 ReSharper),ConstructorArgument 将不会更新,并且在创建 Ninja 时会出现运行时错误。要解决此问题,我需要手动查找通过 ConstructorArgument 指定此参数的所有位置并更新它。不好,即使我有很好的测试覆盖率,我也注定会在某些时候失败。重命名应该是一种廉价的操作。
有什么方法可以改为引用参数 - 以便在重命名参数时更新它?