标签: ninject

使用ninject的WinForms对话框的最佳实践是什么?

我尝试用Ninject创建应用程序.我有一个MainForm用于设置的对话框表单.我应该如何实现这个?应该MainForm有一个Kernel实例,然后SettingsFormGet<SettingsForm>()方法创建?或者MainForm构造函数应该具有SettingsForm实例参数?

我尝试用ninject找到一些WinForm应用程序的例子,但我发现只有一些ASP.NET应用程序在Visual C#2008 express中没用.

c# ninject winforms

2
推荐指数
1
解决办法
2240
查看次数

Ninject + Windows Forms应用程序(C#,VS 2010)

我正在尝试将Ninject与我的Windows应用程序一起使用(C#,VS 2010).构建应用程序时出错:

引用的程序集"Ninject"无法解析,因为它依赖于"System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a",这不在当前目标框架中".NETFramework,Version = v4 0.0,档案=客户端".

我试图将System.Web添加到引用,但我还有更多其他错误.

请帮忙.

c# ninject winforms

2
推荐指数
1
解决办法
780
查看次数

如何为Wcf合同替代使用接口

假设我有3个程序集,Example.Core,Example.Contracts,Example.WcfServices.在我的契约程序集中,我定义了一个接口并添加了一些操作,例如ICalculator,它具有Add(double a,double b)操作.在我的WcfServices程序集中,我将ICalculator实现为Wcf服务.

现在我的问题是这个......在我的Example.Core程序集中,如何在保持所有内容解耦的同时对该接口进行编程(以允许我有一个替代的接口实现).如果我有一个需要ICalculator的类,我可以创建一个来自ChannelFactory并使用它,或者我可以在构造函数中注入一个实例.如果我在课堂上创建一个,那么我在ChannelFactory/Wcf中将依赖项放在我的班级中,我真的不想这样做.如果我在构造函数中注入一个实例,那么注入类将如何管理和整理wcf服务?似乎虽然我有一个界面,但我没有干净的使用方法.我已经看过像NInject这样的东西了,但我不相信如果它出现故障会清理ChannelFactory(至少我没有发现任何文档显示它知道何时调用Abort而不是在通道上关闭).

我最终做的是再次实现我的界面并使用此问题中描述的方法:创建WCF ChannelFactory <T>并只调用服务上的方法.这对我来说有点"闻起来",因为我再次包裹所有的电话只是为了确保通道正确关闭/中止.

有没有任何模式/方法干净地有两个接口的实现,其中一个是Wcf服务?

谢谢,

麦克风.

wcf ninject inversion-of-control

2
推荐指数
1
解决办法
599
查看次数

Ninject MVC 3 - 将依赖项注入模型和控制器

当我们将依赖项注入控制器和模型时,我并不完全理解幕后发生的事情.

我有以下控制器:

    public class TypeController : CommonController
    {
        private ILookUpService lookUpService;

        public TypeController(ILookUpService lookUpService)
        {
            this.lookUpService = lookUpService;    
        }   

    }
Run Code Online (Sandbox Code Playgroud)

应用程序启动时,查找服务已经可用.所以我想在幕后的某个地方我们有代码就行了

TypeController controller = new TypeController(service);
Run Code Online (Sandbox Code Playgroud)

或与工厂有关(我需要阅读).

当将服务注入到视图模型中时,它不起作用,因为我需要在不将接口传递给我的服务的情况下调用空构造函数.

那么幕后发生了什么?如何将服务注入视图模型?我想我错过了一些真正的根本性东西,它阻止我做我需要的东西.

我已将FactoryPattern包含在标签中,因为我的直觉告诉我它与我的问题有关.

谢谢

dependency-injection ninject factory-pattern asp.net-mvc-3

2
推荐指数
1
解决办法
653
查看次数

Ninject 3.0没有处理映射为InRequestScope的对象

我正在尝试使用Ninject来管理对象的生命周期.对于我的IRepository对象,我要求实现IDisposable,并且在ConcreteRepository中,我已经实现了IDisposable来杀死我的NHibernateSession.

我的问题是我还在ConcreteRepository中放置了一个静态变量来计算ConcreteRepository的实例化和析构/处理的数量......当我运行应用程序时,我的数据库连接用完了,我的日志是显示我的应用程序永远不会释放我的连接.

我的Global.asax:

public class Global : NinjectHttpApplication
{
    protected override void OnApplicationStarted()
    {
        base.OnApplicationStarted();

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
        ControllerBuilder.Current.DefaultNamespaces.Add("WebPortal.Controllers");

        var log4netConfigFileInfo = new System.IO.FileInfo(Server.MapPath("~/log4net.xml"));

        log4net.Config.XmlConfigurator.ConfigureAndWatch(log4netConfigFileInfo);
        log4net.ILog log = log4net.LogManager.GetLogger(typeof(Global));
        log.Info("Started...");
    }

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }


    protected override Ninject.IKernel CreateKernel()
    {
        var …
Run Code Online (Sandbox Code Playgroud)

c# ninject ioc-container ninject.web.mvc asp.net-mvc-3

2
推荐指数
1
解决办法
1683
查看次数

Ninject DI导致部署问题

我正在尝试部署一个使用Ninject for DI的网站,该网站在我的开发机器上本地运行良好(不是全部!).当部署到我的主机(使用visual studio ftp发布选项)时,我收到以下错误:

Method not found: 'System.Delegate System.Reflection.MethodInfo.CreateDelegate(System.Type)'.
Run Code Online (Sandbox Code Playgroud)

[InvalidOperationException: An error occurred when trying to create a controller of type 'Website.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.]
Run Code Online (Sandbox Code Playgroud)

查看堆栈跟踪,看起来NinjectDependencyResolver.GetService(Type serviceType)是失败的方法.正如我所说,它在当地的工作正常,所以不知道在哪里或如何处理这个.谷歌没有提出任何有用的东西.

如果那是相关的,我正在使用Ninject 3.0.1.10.

编辑:我已经添加了无参数的构造函数到homecontroller,但它没有任何区别,并存在相同的错误....

deployment asp.net-mvc ninject asp.net-mvc-4

2
推荐指数
1
解决办法
1809
查看次数

Ninject - 类库项目中静态类中的内核

我有与Ninject相同的问题- 静态类中的内核? 但我没有使用WCF,只是一个类库.

拥有静态内核或在任何时候实例化它更好吗?我的UI(现在在MVC应用程序中)使用该服务,所以它会调用静态内核吗?什么是最好的方法?

c# dependency-injection ninject inversion-of-control

2
推荐指数
1
解决办法
3726
查看次数

StructureMap to Ninject转换

我怎么能转换这个:

For<ISession>().Use(ctx => {
    var uow = (INHibernateUnitOfWork)ctx.GetInstance<IUnitOfWork>();
    return uow.Session;
});
Run Code Online (Sandbox Code Playgroud)

对Ninject?

我能够转换这个:

For<ISessionSource>().Singleton().Use<NHibernateSessionSource>();
Run Code Online (Sandbox Code Playgroud)

Bind<ISessionSource>()
    .To<NHibernateSessionSource>()
    .InSingletonScope()
Run Code Online (Sandbox Code Playgroud)

我想我也可以转换这个:

For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<NHibernateUnitOfWork>();
Run Code Online (Sandbox Code Playgroud)

Bind<IUnitOfWork>().To<NHibernateUnitOfWork>().InThreadScope();
Run Code Online (Sandbox Code Playgroud)

我知道这些并非都是一对一的,但我可以得到一些帮助吗?

c# structuremap ninject

2
推荐指数
1
解决办法
321
查看次数

在MVC4中使用Ninject和SignalR

我刚刚开始在我们的MVC 4项目中探索SignalR.我想做的其中一件事是将Ninject DI添加到我们的Hub类中.两个问题:

1)我找到并安装了SignalR.Ninject,但是这样做了,我不太清楚我用它做了什么.我尝试将以下行添加到AppStart NinjectWebCommon文件中的RegisterServices()方法,但这会产生编译错误.

private static void RegisterServices(IKernel kernel)
{
    kernel.Load(
        new Repositories.AssetModule()
    );

    GlobalHost.DependencyResolver = new
        SignalR.Ninject.NinjectDependencyResolver(kernel);
}
Run Code Online (Sandbox Code Playgroud)

2)一旦正确配置,我可以使用Hub类的构造函数注入,还是需要使用[Inject]属性的属性注入?

任何方向都会非常感激.

asp.net-mvc ninject asp.net-mvc-4 signalr

2
推荐指数
1
解决办法
1570
查看次数

如何在使用Unity IoC时实现Ninject .InSingletonScope()

我在我的应用程序中使用了ninject IoC,特别是以下内容:

kernel.Bind<RepositoryFactories>().To<RepositoryFactories>()
   .InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

我想使用Unity IoC实现这一点,但是有人可以告诉我如何使它成为同样的,它的含义是什么"InSingletonScope()"?以下工作,但我担心它没有正确完成,因为可能需要指定Singleton.

container.RegisterType<RepositoryFactories, RepositoryFactories>();
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc ninject unity-container

2
推荐指数
1
解决办法
1467
查看次数