Bueno, no sé si el "término correcto" es el término correcto, pero lo que quiero hacer es lo siguiente.¿Puedo usar Ninject ConstructorArguments con nombres fuertes?
Actualmente utilizo ConstructorArgument como p. Ej. esto:
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"));
}
Ahora, si puedo cambiar el nombre el "nombre" de parámetros (por ejemplo, utilizando ReSharper) la ConstructorArgument no se actualizará, y voy a tener un error de ejecución al crear el Ninja. Para solucionar esto, necesito encontrar todos los lugares manualmente. Especifico este parámetro a través de un ConstructorArgument y lo actualizo. No es bueno, y estoy condenado al fracaso en algún momento a pesar de que tengo una buena cobertura de prueba. Cambiar el nombre debe ser una operación barata.
¿Hay alguna manera en que pueda hacer una referencia al parámetro en su lugar, de modo que se actualice cuando cambie el nombre del parámetro?
Estoy usando esto solo con los componentes que tengo, por lo que no cambiarán repentinamente a menos que se los indique. Pero no quiero tener mis manos atadas cuando refacto ... – stiank81
Entiendo que definitivamente no querría que su código fuera frágil si tuviera que demandar a ConstructorArgument (de ahí que yo + 1en la pregunta). Estaba enfatizando que si posees el código probablemente puedas hacer algo mejor que apoyarte en ConstructorArgument en primer lugar [mientras que si no posees el código hay razones más legítimas para hacerlo, pero los impactos negativos se mitigarían a un grado por el hecho de que es menos probable que cambie]. –
No se preocupe: entiendo la pregunta y no estoy tratando de darle otra falta de respuesta que no resuelva el problema que podría haber pensado usted mismo. (No me hubiera molestado en responder si no fuera por el hecho de que sentí que aún no tienes una respuesta que haya escuchado tu pregunta). –