none
Problemas al utilizar Ninject RRS feed

  • Pregunta

  • Hola

    Estoy trabajando en una app Windows Forms en la cual he implementado el patrón de diseño MVVM al utilizar Ninject ya no debería usar New por el motivo que uso injection, al abrir el formulario en tiempo de diseño me muestra la siguiente imagen

    La linea de código que ocasiona el error es la siguiente resaltado en negrita

    public class BaseForm1 : FormView<ClienteViewModel>
        {
            public BaseForm1() : this(new ClienteViewModel()) { }
    
            public BaseForm1(ClienteViewModel viewModel) : base(viewModel)
            {
    
            }
        }

    El que da problema es ese new.

    Hice lo siguiente pero me sigue saliendo error en otra linea pero de mi clase CompositionRoot

    public class BaseForm1 : FormView<ClienteViewModel>
        {
            public BaseForm1() : this(CompositionRoot.Resolve<ClienteViewModel>()) { }
    
            public BaseForm1(ClienteViewModel viewModel) : base(viewModel)
            {
    
            }
        }

    CompositionRoot

    public class CompositionRoot
        {
            private static IKernel ninjectKernel;
    
            public static void Wire(INinjectModule module)
            {
                ninjectKernel = new StandardKernel(module);
            }
    
            public static T Resolve<T>()
            {
                return ninjectKernel.Get<T>(); => El error dice que es en esta linea 
            }
    
            //Sobre cargue el método para poder pasarle parametros.
            public static T Resolve<T>(params ConstructorArgument[] allArgs)
            {
                return ninjectKernel.Get<T>(allArgs);
            }
    
        }

    Siempre he trabajado esa clase como esta códificado, no se porque ahora me dice error.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    martes, 24 de abril de 2018 22:41

Todas las respuestas

  • hola

    El tema es que el disenadore de winform no se lleva muy bien si le defines parametros en el costructor del form, ademas ninject no se define en diseno por eso usar el ompositionRoot.Resolve no va a funcionar

    Estas seguro que necesitas inyectar un ClienteViewModel en el form ?

    quizas debas definir el CompositionRoot.Resolve dentro del constructor del ClienteViewModel para poder obtener los servicio que necesite

    pero no creo que un winform se lleve muy bien con la inyeccion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 25 de abril de 2018 16:43
  • Hola Leandro

    Estas seguro que necesitas inyectar un ClienteViewModel en el form ?

    Lo hice por tratar de solucionarlo

    pero no creo que un winform se lleve muy bien con la inyeccion

    Si lo he usado antes y no he tenido problemas.

    Saludos.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    miércoles, 25 de abril de 2018 17:30